org.springframework.messaging.Message类的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(12.9k)|赞(0)|评价(0)|浏览(1458)

本文整理了Java中org.springframework.messaging.Message类的一些代码示例,展示了Message类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Message类的具体详情如下:
包路径:org.springframework.messaging.Message
类名称:Message

Message介绍

[英]A generic message representation with headers and body.
[中]带有标题和正文的通用消息表示。

代码示例

代码示例来源:origin: spring-projects/spring-framework

  1. private MessageBuilder(Message<T> originalMessage) {
  2. Assert.notNull(originalMessage, "Message must not be null");
  3. this.payload = originalMessage.getPayload();
  4. this.originalMessage = originalMessage;
  5. this.headerAccessor = new MessageHeaderAccessor(originalMessage);
  6. }

代码示例来源:origin: spring-projects/spring-framework

  1. private void sendInternal(Message<?> message) {
  2. String destination = SimpMessageHeaderAccessor.getDestination(message.getHeaders());
  3. Assert.notNull(destination, "Destination header required");
  4. long timeout = this.sendTimeout;
  5. boolean sent = (timeout >= 0 ? this.messageChannel.send(message, timeout) : this.messageChannel.send(message));
  6. if (!sent) {
  7. throw new MessageDeliveryException(message,
  8. "Failed to send message to destination '" + destination + "' within timeout: " + timeout);
  9. }
  10. }

代码示例来源:origin: spring-projects/spring-framework

  1. /**
  2. * Encodes the given STOMP {@code message} into a {@code byte[]}.
  3. * @param message the message to encode
  4. * @return the encoded message
  5. */
  6. public byte[] encode(Message<byte[]> message) {
  7. return encode(message.getHeaders(), message.getPayload());
  8. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. protected Object convertFromInternal(Message<?> message, Class<?> targetClass, @Nullable Object conversionHint) {
  3. Charset charset = getContentTypeCharset(getMimeType(message.getHeaders()));
  4. Object payload = message.getPayload();
  5. return (payload instanceof String ? payload : new String((byte[]) payload, charset));
  6. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Nullable
  2. public Message<?> preHandle(Message<?> message) throws MessagingException {
  3. String destination = SimpMessageHeaderAccessor.getDestination(message.getHeaders());
  4. if (!getBroadcastDestination().equals(destination)) {
  5. return message;
  6. }
  7. SimpMessageHeaderAccessor accessor =
  8. SimpMessageHeaderAccessor.getAccessor(message, SimpMessageHeaderAccessor.class);
  9. Assert.state(accessor != null, "No SimpMessageHeaderAccessor");
  10. if (accessor.getSessionId() == null) {
  11. // Our own broadcast
  12. return null;
  13. }
  14. destination = accessor.getFirstNativeHeader(SimpMessageHeaderAccessor.ORIGINAL_DESTINATION);
  15. if (logger.isTraceEnabled()) {
  16. logger.trace("Checking unresolved user destination: " + destination);
  17. }
  18. SimpMessageHeaderAccessor newAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE);
  19. for (String name : accessor.toNativeHeaderMap().keySet()) {
  20. if (NO_COPY_LIST.contains(name)) {
  21. continue;
  22. }
  23. newAccessor.setNativeHeader(name, accessor.getFirstNativeHeader(name));
  24. }
  25. if (destination != null) {
  26. newAccessor.setDestination(destination);
  27. }
  28. newAccessor.setHeader(SimpMessageHeaderAccessor.IGNORE_ERROR, true); // ensure send doesn't block
  29. return MessageBuilder.createMessage(message.getPayload(), newAccessor.getMessageHeaders());
  30. }

代码示例来源:origin: spring-projects/spring-integration

  1. protected void doAddMessage(Message<?> message) {
  2. Assert.notNull(message, "'message' must not be null");
  3. UUID messageId = message.getHeaders().getId();
  4. Assert.notNull(messageId, "Cannot store messages without an ID header");
  5. doStoreIfAbsent(this.messagePrefix + messageId, new MessageHolder(message));
  6. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. @Nullable
  3. public Message<byte[]> handleErrorMessageToClient(Message<byte[]> errorMessage) {
  4. StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(errorMessage, StompHeaderAccessor.class);
  5. Assert.notNull(accessor, "No StompHeaderAccessor");
  6. if (!accessor.isMutable()) {
  7. accessor = StompHeaderAccessor.wrap(errorMessage);
  8. }
  9. return handleInternal(accessor, errorMessage.getPayload(), null, null);
  10. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. @Nullable
  3. protected Object convertFromInternal(Message<?> message, Class<?> targetClass, @Nullable Object conversionHint) {
  4. Assert.notNull(this.unmarshaller, "Property 'unmarshaller' is required");
  5. try {
  6. Source source = getSource(message.getPayload());
  7. Object result = this.unmarshaller.unmarshal(source);
  8. if (!targetClass.isInstance(result)) {
  9. throw new TypeMismatchException(result, targetClass);
  10. }
  11. return result;
  12. }
  13. catch (Exception ex) {
  14. throw new MessageConversionException(message, "Could not unmarshal XML: " + ex.getMessage(), ex);
  15. }
  16. }

代码示例来源:origin: spring-projects/spring-batch

  1. /**
  2. * Launches a Batch Job using the provided request {@link Message}. The payload
  3. * of the {@link Message} <em>must</em> be an instance of {@link JobLaunchRequest}.
  4. *
  5. * @param requestMessage must not be null.
  6. * @return Generally a {@link JobExecution} will always be returned. An
  7. * exception ({@link MessageHandlingException}) will only be thrown if there
  8. * is a failure to start the job. The cause of the exception will be a
  9. * {@link JobExecutionException}.
  10. *
  11. * @throws MessageHandlingException when a job cannot be launched
  12. */
  13. @Override
  14. protected Object handleRequestMessage(Message<?> requestMessage) {
  15. Assert.notNull(requestMessage, "The provided requestMessage must not be null.");
  16. final Object payload = requestMessage.getPayload();
  17. Assert.isInstanceOf(JobLaunchRequest.class, payload, "The payload must be of type JobLaunchRequest.");
  18. final JobLaunchRequest jobLaunchRequest = (JobLaunchRequest) payload;
  19. final JobExecution jobExecution;
  20. try {
  21. jobExecution = this.jobLaunchingMessageHandler.launch(jobLaunchRequest);
  22. } catch (JobExecutionException e) {
  23. throw new MessageHandlingException(requestMessage, e);
  24. }
  25. return jobExecution;
  26. }

代码示例来源:origin: spring-projects/spring-framework

  1. /**
  2. * Extract the SiMP session attributes from the given message and
  3. * wrap them in a {@link SimpAttributes} instance.
  4. * @param message the message to extract session attributes from
  5. */
  6. public static SimpAttributes fromMessage(Message<?> message) {
  7. Assert.notNull(message, "Message must not be null");
  8. MessageHeaders headers = message.getHeaders();
  9. String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
  10. Map<String, Object> sessionAttributes = SimpMessageHeaderAccessor.getSessionAttributes(headers);
  11. if (sessionId == null) {
  12. throw new IllegalStateException("No session id in " + message);
  13. }
  14. if (sessionAttributes == null) {
  15. throw new IllegalStateException("No session attributes in " + message);
  16. }
  17. return new SimpAttributes(sessionId, sessionAttributes);
  18. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. protected void doSend(String destination, Message<?> message) {
  3. Assert.notNull(destination, "Destination must not be null");
  4. SimpMessageHeaderAccessor simpAccessor =
  5. MessageHeaderAccessor.getAccessor(message, SimpMessageHeaderAccessor.class);
  6. if (simpAccessor != null) {
  7. if (simpAccessor.isMutable()) {
  8. simpAccessor.setDestination(destination);
  9. simpAccessor.setMessageTypeIfNotSet(SimpMessageType.MESSAGE);
  10. simpAccessor.setImmutable();
  11. sendInternal(message);
  12. return;
  13. }
  14. else {
  15. // Try and keep the original accessor type
  16. simpAccessor = (SimpMessageHeaderAccessor) MessageHeaderAccessor.getMutableAccessor(message);
  17. initHeaders(simpAccessor);
  18. }
  19. }
  20. else {
  21. simpAccessor = SimpMessageHeaderAccessor.wrap(message);
  22. initHeaders(simpAccessor);
  23. }
  24. simpAccessor.setDestination(destination);
  25. simpAccessor.setMessageTypeIfNotSet(SimpMessageType.MESSAGE);
  26. message = MessageBuilder.createMessage(message.getPayload(), simpAccessor.getMessageHeaders());
  27. sendInternal(message);
  28. }

代码示例来源:origin: spring-projects/spring-framework

  1. protected final void doSend(MessageChannel channel, Message<?> message, long timeout) {
  2. Assert.notNull(channel, "MessageChannel is required");
  3. Message<?> messageToSend = message;
  4. MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class);
  5. if (accessor != null && accessor.isMutable()) {
  6. accessor.removeHeader(this.sendTimeoutHeader);
  7. accessor.removeHeader(this.receiveTimeoutHeader);
  8. accessor.setImmutable();
  9. }
  10. else if (message.getHeaders().containsKey(this.sendTimeoutHeader)
  11. || message.getHeaders().containsKey(this.receiveTimeoutHeader)) {
  12. messageToSend = MessageBuilder.fromMessage(message)
  13. .setHeader(this.sendTimeoutHeader, null)
  14. .setHeader(this.receiveTimeoutHeader, null)
  15. .build();
  16. }
  17. boolean sent = (timeout >= 0 ? channel.send(messageToSend, timeout) : channel.send(messageToSend));
  18. if (!sent) {
  19. throw new MessageDeliveryException(message,
  20. "Failed to send message to channel '" + channel + "' within timeout: " + timeout);
  21. }
  22. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. @Nullable
  3. protected final Message<?> doSendAndReceive(MessageChannel channel, Message<?> requestMessage) {
  4. Assert.notNull(channel, "'channel' is required");
  5. Object originalReplyChannelHeader = requestMessage.getHeaders().getReplyChannel();
  6. Object originalErrorChannelHeader = requestMessage.getHeaders().getErrorChannel();
  7. long sendTimeout = sendTimeout(requestMessage);
  8. long receiveTimeout = receiveTimeout(requestMessage);
  9. TemporaryReplyChannel tempReplyChannel = new TemporaryReplyChannel(this.throwExceptionOnLateReply);
  10. requestMessage = MessageBuilder.fromMessage(requestMessage).setReplyChannel(tempReplyChannel)
  11. .setHeader(this.sendTimeoutHeader, null)
  12. .setHeader(this.receiveTimeoutHeader, null)
  13. .setErrorChannel(tempReplyChannel).build();
  14. try {
  15. doSend(channel, requestMessage, sendTimeout);
  16. }
  17. catch (RuntimeException ex) {
  18. tempReplyChannel.setSendFailed(true);
  19. throw ex;
  20. }
  21. Message<?> replyMessage = this.doReceive(tempReplyChannel, receiveTimeout);
  22. if (replyMessage != null) {
  23. replyMessage = MessageBuilder.fromMessage(replyMessage)
  24. .setHeader(MessageHeaders.REPLY_CHANNEL, originalReplyChannelHeader)
  25. .setHeader(MessageHeaders.ERROR_CHANNEL, originalErrorChannelHeader)
  26. .build();
  27. }
  28. return replyMessage;
  29. }

代码示例来源:origin: spring-projects/spring-framework

  1. public WebSocketMessage<?> encode(Message<byte[]> message, Class<? extends WebSocketSession> sessionType) {
  2. StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
  3. Assert.notNull(accessor, "No StompHeaderAccessor available");
  4. byte[] payload = message.getPayload();
  5. byte[] bytes = ENCODER.encode(accessor.getMessageHeaders(), payload);
  6. boolean useBinary = (payload.length > 0 &&
  7. !(SockJsSession.class.isAssignableFrom(sessionType)) &&
  8. MimeTypeUtils.APPLICATION_OCTET_STREAM.isCompatibleWith(accessor.getContentType()));
  9. return (useBinary ? new BinaryMessage(bytes) : new TextMessage(bytes));
  10. }
  11. }

代码示例来源:origin: spring-projects/spring-framework

  1. private void assertTextMessage(Message<?> message) {
  2. assertNotNull("message should not be null", message);
  3. assertEquals("Wrong payload", "Hello", message.getPayload());
  4. assertEquals("Invalid foo property", "bar", message.getHeaders().get("foo"));
  5. }

代码示例来源:origin: spring-projects/spring-framework

  1. private void execute(Message<byte[]> message) {
  2. if (logger.isTraceEnabled()) {
  3. StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
  4. if (accessor != null) {
  5. logger.trace("Sending " + accessor.getDetailedLogMessage(message.getPayload()));
  6. }
  7. }
  8. TcpConnection<byte[]> conn = this.connection;
  9. Assert.state(conn != null, "Connection closed");
  10. try {
  11. conn.send(message).get();
  12. }
  13. catch (ExecutionException ex) {
  14. throw new MessageDeliveryException(message, ex.getCause());
  15. }
  16. catch (Throwable ex) {
  17. throw new MessageDeliveryException(message, ex);
  18. }
  19. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. public TypedValue read(EvaluationContext context, @Nullable Object target, String name) {
  3. Object value;
  4. if (target instanceof Message) {
  5. value = name.equals("headers") ? ((Message) target).getHeaders() : null;
  6. }
  7. else if (target instanceof MessageHeaders) {
  8. MessageHeaders headers = (MessageHeaders) target;
  9. SimpMessageHeaderAccessor accessor =
  10. MessageHeaderAccessor.getAccessor(headers, SimpMessageHeaderAccessor.class);
  11. Assert.state(accessor != null, "No SimpMessageHeaderAccessor");
  12. if ("destination".equalsIgnoreCase(name)) {
  13. value = accessor.getDestination();
  14. }
  15. else {
  16. value = accessor.getFirstNativeHeader(name);
  17. if (value == null) {
  18. value = headers.get(name);
  19. }
  20. }
  21. }
  22. else {
  23. // Should never happen...
  24. throw new IllegalStateException("Expected Message or MessageHeaders.");
  25. }
  26. return new TypedValue(value);
  27. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. public void afterMessageHandled(
  3. Message<?> msg, MessageChannel ch, MessageHandler handler, @Nullable Exception ex) {
  4. Runnable task = (Runnable) msg.getHeaders().get(OrderedMessageSender.COMPLETION_TASK_HEADER);
  5. if (task != null) {
  6. task.run();
  7. }
  8. }
  9. }

代码示例来源:origin: spring-projects/spring-framework

  1. @Override
  2. @Nullable
  3. protected Object convertFromInternal(
  4. Message<?> message, @Nullable Class<?> targetClass, @Nullable Object conversionHint) {
  5. return message.getPayload();
  6. }

代码示例来源:origin: spring-projects/spring-framework

  1. private void handleError(WebSocketSession session, Throwable ex, @Nullable Message<byte[]> clientMessage) {
  2. if (getErrorHandler() == null) {
  3. sendErrorMessage(session, ex);
  4. return;
  5. }
  6. Message<byte[]> message = getErrorHandler().handleClientMessageProcessingError(clientMessage, ex);
  7. if (message == null) {
  8. return;
  9. }
  10. StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
  11. Assert.state(accessor != null, "No StompHeaderAccessor");
  12. sendToClient(session, accessor, message.getPayload());
  13. }

相关文章