Class MessagingMessageListenerAdapter

  • All Implemented Interfaces:
    org.springframework.amqp.core.MessageListener, ChannelAwareMessageListener
    Direct Known Subclasses:
    BatchMessagingMessageListenerAdapter

    public class MessagingMessageListenerAdapter
    extends AbstractAdaptableMessageListener
    A MessageListener adapter that invokes a configurable HandlerAdapter.

    Wraps the incoming AMQP Message to Spring's Message abstraction, copying the standard headers using a configurable AmqpHeaderMapper.

    The original Message and the Channel are provided as additional arguments so that these can be injected as method arguments if necessary.

    Since:
    1.4
    • Constructor Detail

      • MessagingMessageListenerAdapter

        public MessagingMessageListenerAdapter()
      • MessagingMessageListenerAdapter

        public MessagingMessageListenerAdapter​(java.lang.Object bean,
                                               java.lang.reflect.Method method)
      • MessagingMessageListenerAdapter

        public MessagingMessageListenerAdapter​(java.lang.Object bean,
                                               java.lang.reflect.Method method,
                                               boolean returnExceptions,
                                               RabbitListenerErrorHandler errorHandler)
      • MessagingMessageListenerAdapter

        protected MessagingMessageListenerAdapter​(java.lang.Object bean,
                                                  java.lang.reflect.Method method,
                                                  boolean returnExceptions,
                                                  RabbitListenerErrorHandler errorHandler,
                                                  boolean batch)
    • Method Detail

      • setHandlerAdapter

        public void setHandlerAdapter​(HandlerAdapter handlerAdapter)
        Set the HandlerAdapter to use to invoke the method processing an incoming Message.
        Parameters:
        handlerAdapter - HandlerAdapter instance.
      • isAsyncReplies

        public boolean isAsyncReplies()
      • setHeaderMapper

        public void setHeaderMapper​(org.springframework.amqp.support.AmqpHeaderMapper headerMapper)
        Set the AmqpHeaderMapper implementation to use to map the standard AMQP headers. By default, a SimpleAmqpHeaderMapper is used.
        Parameters:
        headerMapper - the AmqpHeaderMapper instance.
        See Also:
        SimpleAmqpHeaderMapper
      • getMessagingMessageConverter

        protected final org.springframework.amqp.support.converter.MessagingMessageConverter getMessagingMessageConverter()
        Returns:
        the MessagingMessageConverter for this listener, being able to convert Message.
      • setMessageConverter

        public void setMessageConverter​(org.springframework.amqp.support.converter.MessageConverter messageConverter)
        Description copied from class: AbstractAdaptableMessageListener
        Set the converter that will convert incoming Rabbit messages to listener method arguments, and objects returned from listener methods back to Rabbit messages.

        The default converter is a SimpleMessageConverter, which is able to handle "text" content-types.

        Overrides:
        setMessageConverter in class AbstractAdaptableMessageListener
        Parameters:
        messageConverter - The message converter.
      • onMessage

        public void onMessage​(org.springframework.amqp.core.Message amqpMessage,
                              com.rabbitmq.client.Channel channel)
                       throws java.lang.Exception
        Description copied from interface: ChannelAwareMessageListener
        Callback for processing a received Rabbit message.

        Implementors are supposed to process the given Message, typically sending reply messages through the given Session.

        Parameters:
        amqpMessage - the received AMQP message (never null)
        channel - the underlying Rabbit Channel (never null unless called by the stream listener container).
        Throws:
        java.lang.Exception - Any.
      • invokeHandlerAndProcessResult

        protected void invokeHandlerAndProcessResult​(@Nullable
                                                     org.springframework.amqp.core.Message amqpMessage,
                                                     com.rabbitmq.client.Channel channel,
                                                     org.springframework.messaging.Message<?> message)
                                              throws java.lang.Exception
        Throws:
        java.lang.Exception
      • toMessagingMessage

        protected org.springframework.messaging.Message<?> toMessagingMessage​(org.springframework.amqp.core.Message amqpMessage)
      • buildMessage

        protected org.springframework.amqp.core.Message buildMessage​(com.rabbitmq.client.Channel channel,
                                                                     java.lang.Object result,
                                                                     java.lang.reflect.Type genericType)
        Build a Rabbit message to be sent as response based on the given result object.
        Overrides:
        buildMessage in class AbstractAdaptableMessageListener
        Parameters:
        channel - the Rabbit Channel to operate on
        result - the content of the message, as returned from the listener method
        genericType - the generic type of the result.
        Returns:
        the Rabbit Message (never null)
        See Also:
        setMessageConverter(org.springframework.amqp.support.converter.MessageConverter)