Class RabbitMessagingTemplate
java.lang.Object
org.springframework.messaging.core.AbstractMessageSendingTemplate<D>
org.springframework.messaging.core.AbstractMessageReceivingTemplate<D>
org.springframework.messaging.core.AbstractMessagingTemplate<String>
org.springframework.amqp.rabbit.core.RabbitMessagingTemplate
- All Implemented Interfaces:
RabbitMessageOperations
,InitializingBean
,MessageReceivingOperations<String>
,MessageRequestReplyOperations<String>
,MessageSendingOperations<String>
public class RabbitMessagingTemplate
extends AbstractMessagingTemplate<String>
implements RabbitMessageOperations, InitializingBean
An implementation of
RabbitMessageOperations
.- Since:
- 1.4
- Author:
- Stephane Nicoll, Gary Russell
-
Field Summary
Fields inherited from class org.springframework.messaging.core.AbstractMessageSendingTemplate
CONVERSION_HINT_HEADER, logger
-
Constructor Summary
ConstructorDescriptionConstructor for use with bean properties.RabbitMessagingTemplate
(RabbitTemplate rabbitTemplate) Create an instance with theRabbitTemplate
to use. -
Method Summary
Modifier and TypeMethodDescriptionvoid
protected MessagingException
protected Message<?>
convertAmqpMessage
(Message message) void
convertAndSend
(String exchange, String routingKey, Object payload) Convert the given Object to serialized form, possibly using aMessageConverter
, wrap it as a message and send it to a specific exchange with a specific routing key.void
Convert the given Object to serialized form, possibly using aMessageConverter
, wrap it as a message with the given headers and send it to a specific exchange with a specific routing key.void
convertAndSend
(String exchange, String routingKey, Object payload, Map<String, Object> headers, MessagePostProcessor postProcessor) Convert the given Object to serialized form, possibly using aMessageConverter
, 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
(String exchange, String routingKey, Object payload, MessagePostProcessor postProcessor) Convert the given Object to serialized form, possibly using aMessageConverter
, 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
(String exchange, String routingKey, Object request, Class<T> targetClass) Convert the given request Object to serialized form, possibly using aMessageConverter
, send it as aMessage
to a specific exchange with a specific routing key, receive the reply and convert its body of the specified target class.<T> T
convertSendAndReceive
(String exchange, String routingKey, Object request, Class<T> targetClass, MessagePostProcessor requestPostProcessor) Convert the given request Object to serialized form, possibly using aMessageConverter
, apply the given post processor and send the resultingMessage
to a specific exchange with a specific routing key, receive the reply and convert its body of the given target class.<T> T
convertSendAndReceive
(String exchange, String routingKey, Object request, Map<String, Object> headers, Class<T> targetClass) Convert the given request Object to serialized form, possibly using aMessageConverter
, send it as aMessage
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
(String exchange, String routingKey, Object request, Map<String, Object> headers, Class<T> targetClass, MessagePostProcessor requestPostProcessor) Convert the given request Object to serialized form, possibly using aMessageConverter
, wrap it as a message with the given headers, apply the given post processor and send the resultingMessage
to a specific exchange with a specific routing key,, receive the reply and convert its body of the given target class.protected Message<?>
protected void
protected void
protected Message<?>
doSendAndReceive
(String exchange, String routingKey, Message<?> requestMessage) protected Message<?>
doSendAndReceive
(String destination, Message<?> requestMessage) Message<?>
receive()
<T> T
receiveAndConvert
(Class<T> targetClass) void
Send a message to a specific exchange with a specific routing key.Message<?>
sendAndReceive
(String exchange, String routingKey, Message<?> requestMessage) Send a request message to a specific exchange with a specific routing key and wait for the reply.void
setAmqpMessageConverter
(MessageConverter amqpMessageConverter) void
setRabbitTemplate
(RabbitTemplate rabbitTemplate) Set theRabbitTemplate
to use.void
setUseTemplateDefaultReceiveQueue
(boolean useTemplateDefaultReceiveQueue) When true, use the underlyingRabbitTemplate
's defaultReceiveQueue property (if configured) for receive only methods instead of thedefaultDestination
configured in this template.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, 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, 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
-
Constructor Details
-
RabbitMessagingTemplate
public RabbitMessagingTemplate()Constructor for use with bean properties. RequiressetRabbitTemplate(org.springframework.amqp.rabbit.core.RabbitTemplate)
to be called. -
RabbitMessagingTemplate
Create an instance with theRabbitTemplate
to use.- Parameters:
rabbitTemplate
- the template.
-
-
Method Details
-
setRabbitTemplate
Set theRabbitTemplate
to use.- Parameters:
rabbitTemplate
- the template.
-
getRabbitTemplate
- Returns:
- the configured
RabbitTemplate
.
-
setAmqpMessageConverter
Set theMessageConverter
to use to convert aMessage
from the messaging to and from aMessage
. By default, aMessagingMessageConverter
is defined using the providedRabbitTemplate
's message converter (aSimpleMessageConverter
by default) to convert the payload of the message.Consider configuring a
MessagingMessageConverter
with a differentpayload converter
for more advanced scenarios.- Parameters:
amqpMessageConverter
- the message converter.- See Also:
-
getAmqpMessageConverter
- Returns:
- the
MessageConverter
to use to convert aMessage
from the messaging to and from aMessage
.
-
setUseTemplateDefaultReceiveQueue
public void setUseTemplateDefaultReceiveQueue(boolean useTemplateDefaultReceiveQueue) When true, use the underlyingRabbitTemplate
's defaultReceiveQueue property (if configured) for receive only methods instead of thedefaultDestination
configured in this template. Set this to true to use the template's queue instead. Default false, but will be true in a future release.- Parameters:
useTemplateDefaultReceiveQueue
- true to use the template's queue.- Since:
- 2.2.22
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSet
in interfaceInitializingBean
-
send
Description copied from interface:RabbitMessageOperations
Send a message to a specific exchange with a specific routing key.- Specified by:
send
in interfaceRabbitMessageOperations
- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keymessage
- the message to send- Throws:
MessagingException
- a messaging exception.
-
convertAndSend
public void convertAndSend(String exchange, String routingKey, Object payload) throws MessagingException Description copied from interface:RabbitMessageOperations
Convert the given Object to serialized form, possibly using aMessageConverter
, wrap it as a message and send it to a specific exchange with a specific routing key.- Specified by:
convertAndSend
in interfaceRabbitMessageOperations
- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keypayload
- the Object to use as payload- Throws:
MessagingException
- a messaging exception.
-
convertAndSend
public void convertAndSend(String exchange, String routingKey, Object payload, @Nullable Map<String, Object> headers) throws MessagingExceptionDescription copied from interface:RabbitMessageOperations
Convert the given Object to serialized form, possibly using aMessageConverter
, 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 interfaceRabbitMessageOperations
- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keypayload
- the Object to use as payloadheaders
- headers for the message to send- Throws:
MessagingException
- a messaging exception.
-
convertAndSend
public void convertAndSend(String exchange, String routingKey, Object payload, @Nullable MessagePostProcessor postProcessor) throws MessagingException Description copied from interface:RabbitMessageOperations
Convert the given Object to serialized form, possibly using aMessageConverter
, 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 interfaceRabbitMessageOperations
- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keypayload
- the Object to use as payloadpostProcessor
- the post processor to apply to the message- Throws:
MessagingException
- a messaging exception.
-
convertAndSend
public void convertAndSend(String exchange, String routingKey, Object payload, @Nullable Map<String, Object> headers, @Nullable MessagePostProcessor postProcessor) throws MessagingExceptionDescription copied from interface:RabbitMessageOperations
Convert the given Object to serialized form, possibly using aMessageConverter
, 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 interfaceRabbitMessageOperations
- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keypayload
- the Object to use as payloadheaders
- headers for the message to sendpostProcessor
- the post processor to apply to the message- Throws:
MessagingException
- a messaging exception.
-
sendAndReceive
@Nullable public Message<?> sendAndReceive(String exchange, String routingKey, Message<?> requestMessage) throws 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 interfaceRabbitMessageOperations
- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keyrequestMessage
- the message to send- Returns:
- the reply, possibly
null
if the message could not be received, for example due to a timeout - Throws:
MessagingException
- a messaging exception.
-
convertSendAndReceive
@Nullable public <T> T convertSendAndReceive(String exchange, String routingKey, Object request, Class<T> targetClass) throws MessagingException Description copied from interface:RabbitMessageOperations
Convert the given request Object to serialized form, possibly using aMessageConverter
, send it as aMessage
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 interfaceRabbitMessageOperations
- Type Parameters:
T
- return type- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keyrequest
- payload for the request message to sendtargetClass
- 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:
MessagingException
- a messaging exception.
-
convertSendAndReceive
@Nullable public <T> T convertSendAndReceive(String exchange, String routingKey, Object request, @Nullable Map<String, Object> headers, Class<T> targetClass) throws MessagingExceptionDescription copied from interface:RabbitMessageOperations
Convert the given request Object to serialized form, possibly using aMessageConverter
, send it as aMessage
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 interfaceRabbitMessageOperations
- Type Parameters:
T
- return type- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keyrequest
- payload for the request message to sendheaders
- headers for the request message to sendtargetClass
- 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:
MessagingException
- a messaging exception.
-
convertSendAndReceive
@Nullable public <T> T convertSendAndReceive(String exchange, String routingKey, Object request, Class<T> targetClass, @Nullable MessagePostProcessor requestPostProcessor) throws MessagingException Description copied from interface:RabbitMessageOperations
Convert the given request Object to serialized form, possibly using aMessageConverter
, apply the given post processor and send the resultingMessage
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 interfaceRabbitMessageOperations
- Type Parameters:
T
- return type- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keyrequest
- payload for the request message to sendtargetClass
- the target type to convert the payload of the reply torequestPostProcessor
- 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:
MessagingException
- a messaging exception.
-
convertSendAndReceive
@Nullable public <T> T convertSendAndReceive(String exchange, String routingKey, Object request, @Nullable Map<String, Object> headers, Class<T> targetClass, @Nullable MessagePostProcessor requestPostProcessor) throws MessagingExceptionDescription copied from interface:RabbitMessageOperations
Convert the given request Object to serialized form, possibly using aMessageConverter
, wrap it as a message with the given headers, apply the given post processor and send the resultingMessage
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 interfaceRabbitMessageOperations
- Type Parameters:
T
- return type- Parameters:
exchange
- the name of the exchangeroutingKey
- the routing keyrequest
- payload for the request message to sendheaders
- headers for the message to sendtargetClass
- the target type to convert the payload of the reply torequestPostProcessor
- 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:
MessagingException
- a messaging exception.
-
doSend
- Specified by:
doSend
in classAbstractMessageSendingTemplate<String>
-
doSend
-
receive
- Specified by:
receive
in interfaceMessageReceivingOperations<String>
- Overrides:
receive
in classAbstractMessageReceivingTemplate<String>
-
receiveAndConvert
- Specified by:
receiveAndConvert
in interfaceMessageReceivingOperations<String>
- Overrides:
receiveAndConvert
in classAbstractMessageReceivingTemplate<String>
-
doReceive
- Specified by:
doReceive
in classAbstractMessageReceivingTemplate<String>
-
doSendAndReceive
- Specified by:
doSendAndReceive
in classAbstractMessagingTemplate<String>
-
doSendAndReceive
-
convertAmqpMessage
-
convertAmqpException
-