List of usage examples for org.springframework.messaging.support ErrorMessage ErrorMessage
public ErrorMessage(Throwable payload, Message<?> originalMessage)
From source file:org.springframework.cloud.sleuth.instrument.messaging.TracingChannelInterceptor.java
private Message<?> outputMessage(Message<?> originalMessage, Message<?> retrievedMessage, MessageHeaderAccessor additionalHeaders) { MessageHeaderAccessor headers = MessageHeaderAccessor.getMutableAccessor(originalMessage); if (originalMessage.getPayload() instanceof MessagingException) { headers.copyHeaders(MessageHeaderPropagation.propagationHeaders(additionalHeaders.getMessageHeaders(), this.tracing.propagation().keys())); return new ErrorMessage((MessagingException) originalMessage.getPayload(), isWebSockets(headers) ? headers.getMessageHeaders() : new MessageHeaders(headers.getMessageHeaders())); }/*from ww w. j a va2 s .com*/ headers.copyHeaders(additionalHeaders.getMessageHeaders()); return new GenericMessage<>(retrievedMessage.getPayload(), isWebSockets(headers) ? headers.getMessageHeaders() : new MessageHeaders(headers.getMessageHeaders())); }
From source file:org.springframework.cloud.sleuth.instrument.messaging.TracingChannelInterceptor.java
/** * This starts a consumer span as a child of the incoming message or the current trace * context. It then creates a span for the handler, placing it in scope. *//*ww w. java 2 s. c o m*/ @Override public Message<?> beforeHandle(Message<?> message, MessageChannel channel, MessageHandler handler) { if (emptyMessage(message)) { return message; } MessageHeaderAccessor headers = mutableHeaderAccessor(message); TraceContextOrSamplingFlags extracted = this.extractor.extract(headers); // Start and finish a consumer span as we will immediately process it. Span consumerSpan = this.tracer.nextSpan(extracted); if (!consumerSpan.isNoop()) { consumerSpan.kind(Span.Kind.CONSUMER).start(); consumerSpan.remoteServiceName(REMOTE_SERVICE_NAME); addTags(message, consumerSpan, channel); consumerSpan.finish(); } // create and scope a span for the message processor this.threadLocalSpan.next(TraceContextOrSamplingFlags.create(consumerSpan.context())).name("handle") .start(); // remove any trace headers, but don't re-inject as we are synchronously // processing the // message and can rely on scoping to access this span later. MessageHeaderPropagation.removeAnyTraceHeaders(headers, this.tracing.propagation().keys()); if (log.isDebugEnabled()) { log.debug("Created a new span in before handle" + consumerSpan); } if (message instanceof ErrorMessage) { return new ErrorMessage((Throwable) message.getPayload(), headers.getMessageHeaders()); } headers.setImmutable(); return new GenericMessage<>(message.getPayload(), headers.getMessageHeaders()); }
From source file:org.springframework.integration.history.MessageHistory.java
@SuppressWarnings("unchecked") public static <T> Message<T> write(Message<T> message, NamedComponent component, MessageBuilderFactory messageBuilderFactory) { Assert.notNull(message, "Message must not be null"); Assert.notNull(component, "Component must not be null"); Properties metadata = extractMetadata(component); if (!metadata.isEmpty()) { MessageHistory previousHistory = message.getHeaders().get(HEADER_NAME, MessageHistory.class); List<Properties> components = (previousHistory != null) ? new ArrayList<Properties>(previousHistory) : new ArrayList<Properties>(); components.add(metadata);// w w w.j a va 2 s.c o m MessageHistory history = new MessageHistory(components); if (message instanceof MutableMessage) { message.getHeaders().put(HEADER_NAME, history); } else if (message instanceof ErrorMessage) { IntegrationMessageHeaderAccessor headerAccessor = new IntegrationMessageHeaderAccessor(message); headerAccessor.setHeader(HEADER_NAME, history); Throwable payload = ((ErrorMessage) message).getPayload(); ErrorMessage errorMessage = new ErrorMessage(payload, headerAccessor.toMessageHeaders()); message = (Message<T>) errorMessage; } else if (message instanceof AdviceMessage) { IntegrationMessageHeaderAccessor headerAccessor = new IntegrationMessageHeaderAccessor(message); headerAccessor.setHeader(HEADER_NAME, history); message = new AdviceMessage<T>(message.getPayload(), headerAccessor.toMessageHeaders(), ((AdviceMessage<?>) message).getInputMessage()); } else { if (!(message instanceof GenericMessage) && (messageBuilderFactory instanceof DefaultMessageBuilderFactory || messageBuilderFactory instanceof MutableMessageBuilderFactory)) { if (logger.isWarnEnabled()) { logger.warn("MessageHistory rebuilds the message and produces the result of the [" + messageBuilderFactory + "], not an instance of the provided type [" + message.getClass() + "]. Consider to supply a custom MessageBuilderFactory " + "to retain custom messages during MessageHistory tracking."); } } message = messageBuilderFactory.fromMessage(message).setHeader(HEADER_NAME, history).build(); } } return message; }
From source file:org.springframework.integration.support.MessageBuilder.java
@Override @SuppressWarnings("unchecked") public Message<T> build() { if (!this.modified && !this.headerAccessor.isModified() && this.originalMessage != null && !containsReadOnly(this.originalMessage.getHeaders())) { return this.originalMessage; }/*from w w w . j a v a 2 s . c o m*/ if (this.payload instanceof Throwable) { return (Message<T>) new ErrorMessage((Throwable) this.payload, this.headerAccessor.toMap()); } return new GenericMessage<T>(this.payload, this.headerAccessor.toMap()); }