Class RabbitMessagingTemplate

  • All Implemented Interfaces:
    RabbitMessageOperations, org.springframework.beans.factory.InitializingBean, org.springframework.messaging.core.MessageReceivingOperations<java.lang.String>, org.springframework.messaging.core.MessageRequestReplyOperations<java.lang.String>, org.springframework.messaging.core.MessageSendingOperations<java.lang.String>

    public class RabbitMessagingTemplate
    extends org.springframework.messaging.core.AbstractMessagingTemplate<java.lang.String>
    implements RabbitMessageOperations, org.springframework.beans.factory.InitializingBean
    An implementation of RabbitMessageOperations.
    Since:
    1.4
    • Field Summary

      • Fields inherited from class org.springframework.messaging.core.AbstractMessageSendingTemplate

        CONVERSION_HINT_HEADER, logger
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void afterPropertiesSet()  
      protected org.springframework.messaging.MessagingException convertAmqpException​(java.lang.RuntimeException ex)  
      protected org.springframework.messaging.Message<?> convertAmqpMessage​(org.springframework.amqp.core.Message message)  
      void convertAndSend​(java.lang.String exchange, java.lang.String routingKey, java.lang.Object payload)
      Convert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message and send it to a specific exchange with a specific routing key.
      void convertAndSend​(java.lang.String exchange, java.lang.String routingKey, java.lang.Object payload, java.util.Map<java.lang.String,​java.lang.Object> headers)
      Convert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message with the given headers and send it to a specific exchange with a specific routing key.
      void convertAndSend​(java.lang.String exchange, java.lang.String routingKey, java.lang.Object payload, java.util.Map<java.lang.String,​java.lang.Object> headers, org.springframework.messaging.core.MessagePostProcessor postProcessor)
      Convert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message with the given headers, apply the given post processor, and send the resulting message to a specific exchange with a specific routing key.
      void convertAndSend​(java.lang.String exchange, java.lang.String routingKey, java.lang.Object payload, org.springframework.messaging.core.MessagePostProcessor postProcessor)
      Convert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message, apply the given post processor, and send the resulting message to a specific exchange with a specific routing key.
      <T> T convertSendAndReceive​(java.lang.String exchange, java.lang.String routingKey, java.lang.Object request, java.lang.Class<T> targetClass)
      Convert the given request Object to serialized form, possibly using a MessageConverter, send it as a Message to a specific exchange with a specific routing key, receive the reply and convert its body of the specified target class.
      <T> T convertSendAndReceive​(java.lang.String exchange, java.lang.String routingKey, java.lang.Object request, java.lang.Class<T> targetClass, org.springframework.messaging.core.MessagePostProcessor requestPostProcessor)
      Convert the given request Object to serialized form, possibly using a MessageConverter, apply the given post processor and send the resulting Message to a specific exchange with a specific routing key, receive the reply and convert its body of the given target class.
      <T> T convertSendAndReceive​(java.lang.String exchange, java.lang.String routingKey, java.lang.Object request, java.util.Map<java.lang.String,​java.lang.Object> headers, java.lang.Class<T> targetClass)
      Convert the given request Object to serialized form, possibly using a MessageConverter, send it as a Message with the given headers, to a specific exchange with a specific routing key, receive the reply and convert its body of the specified target class.
      <T> T convertSendAndReceive​(java.lang.String exchange, java.lang.String routingKey, java.lang.Object request, java.util.Map<java.lang.String,​java.lang.Object> headers, java.lang.Class<T> targetClass, org.springframework.messaging.core.MessagePostProcessor requestPostProcessor)
      Convert the given request Object to serialized form, possibly using a MessageConverter, wrap it as a message with the given headers, apply the given post processor and send the resulting Message to a specific exchange with a specific routing key,, receive the reply and convert its body of the given target class.
      protected org.springframework.messaging.Message<?> doReceive​(java.lang.String destination)  
      protected void doSend​(java.lang.String exchange, java.lang.String routingKey, org.springframework.messaging.Message<?> message)  
      protected void doSend​(java.lang.String destination, org.springframework.messaging.Message<?> message)  
      protected org.springframework.messaging.Message<?> doSendAndReceive​(java.lang.String exchange, java.lang.String routingKey, org.springframework.messaging.Message<?> requestMessage)  
      protected org.springframework.messaging.Message<?> doSendAndReceive​(java.lang.String destination, org.springframework.messaging.Message<?> requestMessage)  
      org.springframework.amqp.support.converter.MessageConverter getAmqpMessageConverter()  
      RabbitTemplate getRabbitTemplate()  
      void send​(java.lang.String exchange, java.lang.String routingKey, org.springframework.messaging.Message<?> message)
      Send a message to a specific exchange with a specific routing key.
      org.springframework.messaging.Message<?> sendAndReceive​(java.lang.String exchange, java.lang.String routingKey, org.springframework.messaging.Message<?> requestMessage)
      Send a request message to a specific exchange with a specific routing key and wait for the reply.
      void setAmqpMessageConverter​(org.springframework.amqp.support.converter.MessageConverter amqpMessageConverter)
      Set the MessageConverter to use to convert a Message from the messaging to and from a Message.
      void setRabbitTemplate​(RabbitTemplate rabbitTemplate)
      Set the RabbitTemplate to use.
      • Methods inherited from class org.springframework.messaging.core.AbstractMessagingTemplate

        convertSendAndReceive, convertSendAndReceive, convertSendAndReceive, convertSendAndReceive, convertSendAndReceive, convertSendAndReceive, sendAndReceive, sendAndReceive
      • Methods inherited from class org.springframework.messaging.core.AbstractMessageReceivingTemplate

        doConvert, receive, receive, receiveAndConvert, receiveAndConvert
      • Methods inherited from class org.springframework.messaging.core.AbstractMessageSendingTemplate

        convertAndSend, convertAndSend, convertAndSend, convertAndSend, convertAndSend, convertAndSend, doConvert, getDefaultDestination, getMessageConverter, getRequiredDefaultDestination, processHeadersToSend, send, send, setDefaultDestination, setMessageConverter
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.springframework.messaging.core.MessageReceivingOperations

        receive, receive, receiveAndConvert, receiveAndConvert
      • Methods inherited from interface org.springframework.messaging.core.MessageRequestReplyOperations

        convertSendAndReceive, convertSendAndReceive, convertSendAndReceive, convertSendAndReceive, convertSendAndReceive, convertSendAndReceive, sendAndReceive, sendAndReceive
      • Methods inherited from interface org.springframework.messaging.core.MessageSendingOperations

        convertAndSend, convertAndSend, convertAndSend, convertAndSend, convertAndSend, convertAndSend, send, send
    • Method Detail

      • setRabbitTemplate

        public void setRabbitTemplate​(RabbitTemplate rabbitTemplate)
        Set the RabbitTemplate to use.
        Parameters:
        rabbitTemplate - the template.
      • setAmqpMessageConverter

        public void setAmqpMessageConverter​(org.springframework.amqp.support.converter.MessageConverter amqpMessageConverter)
        Set the MessageConverter to use to convert a Message from the messaging to and from a Message. By default, a MessagingMessageConverter is defined using the provided RabbitTemplate's message converter (a SimpleMessageConverter by default) to convert the payload of the message.

        Consider configuring a MessagingMessageConverter with a different payload converter for more advanced scenarios.

        Parameters:
        amqpMessageConverter - the message converter.
        See Also:
        MessagingMessageConverter
      • getAmqpMessageConverter

        public org.springframework.amqp.support.converter.MessageConverter getAmqpMessageConverter()
        Returns:
        the MessageConverter to use to convert a Message from the messaging to and from a Message.
      • afterPropertiesSet

        public void afterPropertiesSet()
        Specified by:
        afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      • send

        public void send​(java.lang.String exchange,
                         java.lang.String routingKey,
                         org.springframework.messaging.Message<?> message)
                  throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Send a message to a specific exchange with a specific routing key.
        Specified by:
        send in interface RabbitMessageOperations
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        message - the message to send
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • convertAndSend

        public void convertAndSend​(java.lang.String exchange,
                                   java.lang.String routingKey,
                                   java.lang.Object payload)
                            throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Convert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message and send it to a specific exchange with a specific routing key.
        Specified by:
        convertAndSend in interface RabbitMessageOperations
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        payload - the Object to use as payload
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • convertAndSend

        public void convertAndSend​(java.lang.String exchange,
                                   java.lang.String routingKey,
                                   java.lang.Object payload,
                                   @Nullable
                                   java.util.Map<java.lang.String,​java.lang.Object> headers)
                            throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Convert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message with the given headers and send it to a specific exchange with a specific routing key.
        Specified by:
        convertAndSend in interface RabbitMessageOperations
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        payload - the Object to use as payload
        headers - headers for the message to send
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • convertAndSend

        public void convertAndSend​(java.lang.String exchange,
                                   java.lang.String routingKey,
                                   java.lang.Object payload,
                                   @Nullable
                                   org.springframework.messaging.core.MessagePostProcessor postProcessor)
                            throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Convert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message, apply the given post processor, and send the resulting message to a specific exchange with a specific routing key.
        Specified by:
        convertAndSend in interface RabbitMessageOperations
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        payload - the Object to use as payload
        postProcessor - the post processor to apply to the message
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • convertAndSend

        public void convertAndSend​(java.lang.String exchange,
                                   java.lang.String routingKey,
                                   java.lang.Object payload,
                                   @Nullable
                                   java.util.Map<java.lang.String,​java.lang.Object> headers,
                                   @Nullable
                                   org.springframework.messaging.core.MessagePostProcessor postProcessor)
                            throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Convert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message with the given headers, apply the given post processor, and send the resulting message to a specific exchange with a specific routing key.
        Specified by:
        convertAndSend in interface RabbitMessageOperations
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        payload - the Object to use as payload
        headers - headers for the message to send
        postProcessor - the post processor to apply to the message
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • sendAndReceive

        @Nullable
        public org.springframework.messaging.Message<?> sendAndReceive​(java.lang.String exchange,
                                                                       java.lang.String routingKey,
                                                                       org.springframework.messaging.Message<?> requestMessage)
                                                                throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Send a request message to a specific exchange with a specific routing key and wait for the reply.
        Specified by:
        sendAndReceive in interface RabbitMessageOperations
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        requestMessage - the message to send
        Returns:
        the reply, possibly null if the message could not be received, for example due to a timeout
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • convertSendAndReceive

        @Nullable
        public <T> T convertSendAndReceive​(java.lang.String exchange,
                                           java.lang.String routingKey,
                                           java.lang.Object request,
                                           java.lang.Class<T> targetClass)
                                    throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Convert the given request Object to serialized form, possibly using a MessageConverter, send it as a Message to a specific exchange with a specific routing key, receive the reply and convert its body of the specified target class.
        Specified by:
        convertSendAndReceive in interface RabbitMessageOperations
        Type Parameters:
        T - return type
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        request - payload for the request message to send
        targetClass - the target type to convert the payload of the reply to
        Returns:
        the payload of the reply message, possibly null if the message could not be received, for example due to a timeout
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • convertSendAndReceive

        @Nullable
        public <T> T convertSendAndReceive​(java.lang.String exchange,
                                           java.lang.String routingKey,
                                           java.lang.Object request,
                                           @Nullable
                                           java.util.Map<java.lang.String,​java.lang.Object> headers,
                                           java.lang.Class<T> targetClass)
                                    throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Convert the given request Object to serialized form, possibly using a MessageConverter, send it as a Message with the given headers, to a specific exchange with a specific routing key, receive the reply and convert its body of the specified target class.
        Specified by:
        convertSendAndReceive in interface RabbitMessageOperations
        Type Parameters:
        T - return type
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        request - payload for the request message to send
        headers - headers for the request message to send
        targetClass - the target type to convert the payload of the reply to
        Returns:
        the payload of the reply message, possibly null if the message could not be received, for example due to a timeout
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • convertSendAndReceive

        @Nullable
        public <T> T convertSendAndReceive​(java.lang.String exchange,
                                           java.lang.String routingKey,
                                           java.lang.Object request,
                                           java.lang.Class<T> targetClass,
                                           @Nullable
                                           org.springframework.messaging.core.MessagePostProcessor requestPostProcessor)
                                    throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Convert the given request Object to serialized form, possibly using a MessageConverter, apply the given post processor and send the resulting Message to a specific exchange with a specific routing key, receive the reply and convert its body of the given target class.
        Specified by:
        convertSendAndReceive in interface RabbitMessageOperations
        Type Parameters:
        T - return type
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        request - payload for the request message to send
        targetClass - the target type to convert the payload of the reply to
        requestPostProcessor - post process to apply to the request message
        Returns:
        the payload of the reply message, possibly null if the message could not be received, for example due to a timeout
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • convertSendAndReceive

        @Nullable
        public <T> T convertSendAndReceive​(java.lang.String exchange,
                                           java.lang.String routingKey,
                                           java.lang.Object request,
                                           @Nullable
                                           java.util.Map<java.lang.String,​java.lang.Object> headers,
                                           java.lang.Class<T> targetClass,
                                           @Nullable
                                           org.springframework.messaging.core.MessagePostProcessor requestPostProcessor)
                                    throws org.springframework.messaging.MessagingException
        Description copied from interface: RabbitMessageOperations
        Convert the given request Object to serialized form, possibly using a MessageConverter, wrap it as a message with the given headers, apply the given post processor and send the resulting Message to a specific exchange with a specific routing key,, receive the reply and convert its body of the given target class.
        Specified by:
        convertSendAndReceive in interface RabbitMessageOperations
        Type Parameters:
        T - return type
        Parameters:
        exchange - the name of the exchange
        routingKey - the routing key
        request - payload for the request message to send
        headers - headers for the message to send
        targetClass - the target type to convert the payload of the reply to
        requestPostProcessor - post process to apply to the request message
        Returns:
        the payload of the reply message, possibly null if the message could not be received, for example due to a timeout
        Throws:
        org.springframework.messaging.MessagingException - a messaging exception.
      • doSend

        protected void doSend​(java.lang.String destination,
                              org.springframework.messaging.Message<?> message)
        Specified by:
        doSend in class org.springframework.messaging.core.AbstractMessageSendingTemplate<java.lang.String>
      • doSend

        protected void doSend​(java.lang.String exchange,
                              java.lang.String routingKey,
                              org.springframework.messaging.Message<?> message)
      • doReceive

        protected org.springframework.messaging.Message<?> doReceive​(java.lang.String destination)
        Specified by:
        doReceive in class org.springframework.messaging.core.AbstractMessageReceivingTemplate<java.lang.String>
      • doSendAndReceive

        @Nullable
        protected org.springframework.messaging.Message<?> doSendAndReceive​(java.lang.String destination,
                                                                            org.springframework.messaging.Message<?> requestMessage)
        Specified by:
        doSendAndReceive in class org.springframework.messaging.core.AbstractMessagingTemplate<java.lang.String>
      • doSendAndReceive

        @Nullable
        protected org.springframework.messaging.Message<?> doSendAndReceive​(java.lang.String exchange,
                                                                            java.lang.String routingKey,
                                                                            org.springframework.messaging.Message<?> requestMessage)
      • convertAmqpMessage

        @Nullable
        protected org.springframework.messaging.Message<?> convertAmqpMessage​(@Nullable
                                                                              org.springframework.amqp.core.Message message)
      • convertAmqpException

        protected org.springframework.messaging.MessagingException convertAmqpException​(java.lang.RuntimeException ex)