Example usage for org.springframework.messaging.support ErrorMessage ErrorMessage

List of usage examples for org.springframework.messaging.support ErrorMessage ErrorMessage

Introduction

In this page you can find the example usage for org.springframework.messaging.support ErrorMessage ErrorMessage.

Prototype

public ErrorMessage(Throwable payload, Message<?> originalMessage) 

Source Link

Document

Create a new message with the given payload and original message.

Usage

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());
}