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 ofRabbitMessageOperations
.- 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
Constructors Constructor Description RabbitMessagingTemplate()
Constructor for use with bean properties.RabbitMessagingTemplate(RabbitTemplate rabbitTemplate)
Create an instance with theRabbitTemplate
to use.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPropertiesSet()
protected MessagingException
convertAmqpException(RuntimeException ex)
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
convertAndSend(String exchange, String routingKey, Object payload, Map<String,Object> headers)
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<?>
doReceive(String destination)
protected void
doSend(String exchange, String routingKey, Message<?> message)
protected void
doSend(String destination, Message<?> message)
protected Message<?>
doSendAndReceive(String exchange, String routingKey, Message<?> requestMessage)
protected Message<?>
doSendAndReceive(String destination, Message<?> requestMessage)
MessageConverter
getAmqpMessageConverter()
RabbitTemplate
getRabbitTemplate()
void
send(String exchange, String routingKey, Message<?> message)
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.-
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
-
-
-
-
Constructor Detail
-
RabbitMessagingTemplate
public RabbitMessagingTemplate()
Constructor for use with bean properties. RequiressetRabbitTemplate(org.springframework.amqp.rabbit.core.RabbitTemplate)
to be called.
-
RabbitMessagingTemplate
public RabbitMessagingTemplate(RabbitTemplate rabbitTemplate)
Create an instance with theRabbitTemplate
to use.- Parameters:
rabbitTemplate
- the template.
-
-
Method Detail
-
setRabbitTemplate
public void setRabbitTemplate(RabbitTemplate rabbitTemplate)
Set theRabbitTemplate
to use.- Parameters:
rabbitTemplate
- the template.
-
getRabbitTemplate
public RabbitTemplate getRabbitTemplate()
- Returns:
- the configured
RabbitTemplate
.
-
setAmqpMessageConverter
public void setAmqpMessageConverter(MessageConverter amqpMessageConverter)
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:
MessagingMessageConverter
-
getAmqpMessageConverter
public MessageConverter getAmqpMessageConverter()
- Returns:
- the
MessageConverter
to use to convert aMessage
from the messaging to and from aMessage
.
-
afterPropertiesSet
public void afterPropertiesSet()
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
-
send
public void send(String exchange, String routingKey, Message<?> message) throws MessagingException
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 MessagingException
Description 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 MessagingException
Description 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 MessagingException
Description 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 MessagingException
Description 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
protected void doSend(String destination, Message<?> message)
- Specified by:
doSend
in classAbstractMessageSendingTemplate<String>
-
doReceive
protected Message<?> doReceive(String destination)
- Specified by:
doReceive
in classAbstractMessageReceivingTemplate<String>
-
doSendAndReceive
@Nullable protected Message<?> doSendAndReceive(String destination, Message<?> requestMessage)
- Specified by:
doSendAndReceive
in classAbstractMessagingTemplate<String>
-
doSendAndReceive
@Nullable protected Message<?> doSendAndReceive(String exchange, String routingKey, Message<?> requestMessage)
-
convertAmqpException
protected MessagingException convertAmqpException(RuntimeException ex)
-
-