Class RabbitTemplate
- java.lang.Object
-
- org.springframework.amqp.rabbit.connection.RabbitAccessor
-
- org.springframework.amqp.rabbit.core.RabbitTemplate
-
- All Implemented Interfaces:
AmqpTemplate,MessageListener,PublisherCallbackChannel.Listener,RabbitOperations,ChannelAwareMessageListener,ListenerContainerAware,Aware,BeanFactoryAware,BeanNameAware,DisposableBean,InitializingBean,Lifecycle
- Direct Known Subclasses:
BatchingRabbitTemplate,TestRabbitTemplate
public class RabbitTemplate extends RabbitAccessor implements BeanFactoryAware, RabbitOperations, ChannelAwareMessageListener, ListenerContainerAware, PublisherCallbackChannel.Listener, BeanNameAware, DisposableBean
Helper class that simplifies synchronous RabbitMQ access (sending and receiving messages).
The default settings are for non-transactional messaging, which reduces the amount of data exchanged with the broker. To use a new transaction for every send or receive set the
channelTransactedflag. To extend the transaction over multiple invocations (more efficient), you can use a Spring transaction to bracket the calls (withchannelTransacted=trueas well).The only mandatory property is the
ConnectionFactory. There are strategies available for converting messages to and from Java objects (MessageConverter) and for converting message headers (known as message properties in AMQP, seeMessagePropertiesConverter). The defaults probably do something sensible for typical use cases, as long as the message content-type is set appropriately.The "send" methods all have overloaded versions that allow you to explicitly target an exchange and a routing key, or you can set default values to be used in all send operations. The plain "receive" methods allow you to explicitly target a queue to receive from, or you can set a default value for the template that applies to all explicit receives. The convenience methods for send and receive use the sender defaults if no exchange or routing key is specified, but they always use a temporary queue for the receive leg, so the default queue is ignored.
- Since:
- 1.0
- Author:
- Mark Pollack, Mark Fisher, Dave Syer, Gary Russell, Artem Bilan, Ernest Sadykov, Mark Norkin, Mohammad Hewedy, Alexey Platonov
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceRabbitTemplate.ConfirmCallbackA callback for publisher confirmations.static interfaceRabbitTemplate.ReturnCallbackDeprecated.in favor ofRabbitTemplate.ReturnCallback.returnedMessage(ReturnedMessage)which is easier to use with lambdas.static interfaceRabbitTemplate.ReturnsCallbackA callback for returned messages.protected static classRabbitTemplate.TemplateConsumerAddsRabbitTemplate.TemplateConsumer.toString()to theDefaultConsumer.-
Nested classes/interfaces inherited from interface org.springframework.amqp.rabbit.core.RabbitOperations
RabbitOperations.OperationsCallback<T>
-
-
Field Summary
-
Fields inherited from class org.springframework.amqp.rabbit.connection.RabbitAccessor
logger
-
-
Constructor Summary
Constructors Constructor Description RabbitTemplate()Convenient constructor for use with setter injection.RabbitTemplate(ConnectionFactory connectionFactory)Create a rabbit template with default strategies and settings.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddAfterReceivePostProcessors(MessagePostProcessor... afterReceivePostProcessors)AddMessagePostProcessorthat will be invoked immediately after aChannel#basicGet()and before any message conversion is performed.voidaddBeforePublishPostProcessors(MessagePostProcessor... beforePublishPostProcessors)AddMessagePostProcessorthat will be invoked immediately before invokingChannel#basicPublish(), after all other processing, except creating theAMQP.BasicPropertiesfromMessageProperties.voidaddListener(com.rabbitmq.client.Channel channel)Add this template as a confirms listener for the provided channel.voidconvertAndSend(Object object)Convert a Java object to an AmqpMessageand send it to a default exchange with a default routing key.voidconvertAndSend(Object message, MessagePostProcessor messagePostProcessor)Convert a Java object to an AmqpMessageand send it to a default exchange with a default routing key.voidconvertAndSend(Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData)Convert a Java object to an AmqpMessageand send it to a default exchange with a default routing key.voidconvertAndSend(String routingKey, Object object)Convert a Java object to an AmqpMessageand send it to a default exchange with a specific routing key.voidconvertAndSend(String routingKey, Object message, MessagePostProcessor messagePostProcessor)Convert a Java object to an AmqpMessageand send it to a default exchange with a specific routing key.voidconvertAndSend(String routingKey, Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData)Convert a Java object to an AmqpMessageand send it to a default exchange with a specific routing key.voidconvertAndSend(String routingKey, Object object, CorrelationData correlationData)Convert a Java object to an AmqpMessageand send it to a default exchange with a specific routing key.voidconvertAndSend(String exchange, String routingKey, Object object)Convert a Java object to an AmqpMessageand send it to a specific exchange with a specific routing key.voidconvertAndSend(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor)Convert a Java object to an AmqpMessageand send it to a specific exchange with a specific routing key.voidconvertAndSend(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData)Convert a Java object to an AmqpMessageand send it to a specific exchange with a specific routing key.voidconvertAndSend(String exchange, String routingKey, Object object, CorrelationData correlationData)Convert a Java object to an AmqpMessageand send it to a specific exchange with a specific routing key.protected MessageconvertMessageIfNecessary(Object object)ObjectconvertSendAndReceive(Object message)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(Object message, MessagePostProcessor messagePostProcessor)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(Object message, CorrelationData correlationData)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(String routingKey, Object message)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(String routingKey, Object message, MessagePostProcessor messagePostProcessor)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(String routingKey, Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(String routingKey, Object message, CorrelationData correlationData)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(String exchange, String routingKey, Object message)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData)Basic RPC pattern with conversion.ObjectconvertSendAndReceive(String exchange, String routingKey, Object message, CorrelationData correlationData)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(Object message, MessagePostProcessor messagePostProcessor, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(Object message, CorrelationData correlationData, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(Object message, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(String routingKey, Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(String routingKey, Object message, MessagePostProcessor messagePostProcessor, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(String routingKey, Object message, CorrelationData correlationData, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(String routingKey, Object message, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.<T> TconvertSendAndReceiveAsType(String exchange, String routingKey, Object message, ParameterizedTypeReference<T> responseType)Basic RPC pattern with conversion.protected MessageconvertSendAndReceiveRaw(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData)Convert and send a message and return the raw reply message, or null.voidcorrelationConvertAndSend(Object object, CorrelationData correlationData)Convert a Java object to an AmqpMessageand send it to a default exchange with a default routing key.voiddestroy()voiddetermineConfirmsReturnsCapability(ConnectionFactory connectionFactory)protected MessagedoReceiveNoWait(String queueName)Non-blocking receive.voiddoSend(com.rabbitmq.client.Channel channel, String exchangeArg, String routingKeyArg, Message message, boolean mandatory, CorrelationData correlationData)Send the given message to the specified exchange.protected MessagedoSendAndReceive(String exchange, String routingKey, Message message, CorrelationData correlationData)Send a message and wait for a reply.protected MessagedoSendAndReceiveWithFixed(String exchange, String routingKey, Message message, CorrelationData correlationData)protected MessagedoSendAndReceiveWithTemporary(String exchange, String routingKey, Message message, CorrelationData correlationData)protected voiddoStart()Perform additional start actions.protected voiddoStop()Perform additional stop actions.<T> Texecute(ChannelCallback<T> action)Execute the callback with a channel and reliably close the channel afterwards.Collection<String>expectedQueueNames()Invoked by the container during startup so it can verify the queue is correctly configured (if a simple reply queue name is used instead of exchange/routingKey).Collection<MessagePostProcessor>getAfterReceivePostProcessors()Return configured after receiveMessagePostProcessors ornull.StringgetDefaultReceiveQueue()Return the configured default receive queue.StringgetEncoding()The encoding used when converting between byte arrays and Strings in message properties.StringgetExchange()MessageConvertergetMessageConverter()Return the message converter for this template.protected MessagePropertiesConvertergetMessagePropertiesConverter()Return the properties converter.StringgetRoutingKey()Collection<CorrelationData>getUnconfirmed(long age)Gets unconfirmed correlation data older than age and removes them.intgetUnconfirmedCount()Gets unconfirmed messages count.StringgetUUID()Returns the UUID used to identify this Listener for returns.voidhandleConfirm(PendingConfirm pendingConfirm, boolean ack)Invoked by the channel when a confirm is received.voidhandleReturn(int replyCode, String replyText, String exchange, String routingKey, com.rabbitmq.client.AMQP.BasicProperties properties, byte[] body)Handle a returned message.voidhandleReturn(com.rabbitmq.client.Return returned)Handle a returned message.protected voidinitDefaultStrategies()Set up the default strategies.<T> Tinvoke(RabbitOperations.OperationsCallback<T> action, com.rabbitmq.client.ConfirmCallback acks, com.rabbitmq.client.ConfirmCallback nacks)Invoke operations on the same channel.protected booleanisChannelLocallyTransacted(com.rabbitmq.client.Channel channel)Check whether the given Channel is locally transacted, that is, whether its transaction is managed by this template's Channel handling and not by an external transaction coordinator.booleanisConfirmListener()BooleanisMandatoryFor(Message message)Return whether the provided message should be sent with the mandatory flag set.booleanisReturnListener()booleanisRunning()booleanisUsePublisherConnection()True if separate publisher connection(s) are used.StringnullSafeExchange(String exchange)Return the exchange or the default exchange if null.StringnullSafeRoutingKey(String rk)Return the routing key or the default routing key if null.voidonMessage(Message message)Deprecated.- useonMessage(Message, Channel).voidonMessage(Message message, com.rabbitmq.client.Channel channel)Callback for processing a received Rabbit message.Messagereceive()Receive a message if there is one from a default queue.Messagereceive(long timeoutMillis)Receive a message from a default queue, waiting up to the specified wait time if necessary for a message to become available.Messagereceive(String queueName)Receive a message if there is one from a specific queue.Messagereceive(String queueName, long timeoutMillis)Receive a message from a specific queue, waiting up to the specified wait time if necessary for a message to become available.ObjectreceiveAndConvert()Receive a message if there is one from a default queue and convert it to a Java object.ObjectreceiveAndConvert(long timeoutMillis)Receive a message if there is one from a default queue and convert it to a Java object.<T> TreceiveAndConvert(long timeoutMillis, ParameterizedTypeReference<T> type)Receive a message if there is one from a default queue and convert it to a Java object.ObjectreceiveAndConvert(String queueName)Receive a message if there is one from a specific queue and convert it to a Java object.ObjectreceiveAndConvert(String queueName, long timeoutMillis)Receive a message if there is one from a specific queue and convert it to a Java object.<T> TreceiveAndConvert(String queueName, long timeoutMillis, ParameterizedTypeReference<T> type)Receive a message if there is one from a specific queue and convert it to a Java object.<T> TreceiveAndConvert(String queueName, ParameterizedTypeReference<T> type)Receive a message if there is one from a specific queue and convert it to a Java object.<T> TreceiveAndConvert(ParameterizedTypeReference<T> type)Receive a message if there is one from a default queue and convert it to a Java object.<R,S>
booleanreceiveAndReply(String queueName, ReceiveAndReplyCallback<R,S> callback)Receive a message if there is one from provided queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to thereplyToAddressfromMessagePropertiesor to default exchange and default routingKey.<R,S>
booleanreceiveAndReply(String queueName, ReceiveAndReplyCallback<R,S> callback, String replyExchange, String replyRoutingKey)Receive a message if there is one from provided queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to the providedexchangeandroutingKey.<R,S>
booleanreceiveAndReply(String queueName, ReceiveAndReplyCallback<R,S> callback, ReplyToAddressCallback<S> replyToAddressCallback)Receive a message if there is one from provided queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to thereplyToAddressfrom result ofReplyToAddressCallback.<R,S>
booleanreceiveAndReply(ReceiveAndReplyCallback<R,S> callback)Receive a message if there is one from a default queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to thereplyToAddressfromMessagePropertiesor to default exchange and default routingKey.<R,S>
booleanreceiveAndReply(ReceiveAndReplyCallback<R,S> callback, String exchange, String routingKey)Receive a message if there is one from default queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to the providedexchangeandroutingKey.<R,S>
booleanreceiveAndReply(ReceiveAndReplyCallback<R,S> callback, ReplyToAddressCallback<S> replyToAddressCallback)Receive a message if there is one from a default queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to thereplyToAddressfrom result ofReplyToAddressCallback.booleanremoveAfterReceivePostProcessor(MessagePostProcessor afterReceivePostProcessor)Remove the providedMessagePostProcessorfrom theafterReceivePostProcessorslist.booleanremoveBeforePublishPostProcessor(MessagePostProcessor beforePublishPostProcessor)Remove the providedMessagePostProcessorfrom thebeforePublishPostProcessorslist.protected voidreplyTimedOut(String correlationId)Subclasses can implement this to be notified that a reply has timed out.voidrevoke(com.rabbitmq.client.Channel channel)When called, this listener should remove all references to the channel - it will no longer be invoked by the channel.voidsend(String exchange, String routingKey, Message message)Send a message to a specific exchange with a specific routing key.voidsend(String exchange, String routingKey, Message message, CorrelationData correlationData)Send a message to a specific exchange with a specific routing key.voidsend(String routingKey, Message message)Send a message to a default exchange with a specific routing key.voidsend(String routingKey, Message message, CorrelationData correlationData)Send a message to the default exchange with a specific routing key.voidsend(Message message)Send a message to a default exchange with a default routing key.MessagesendAndReceive(String exchange, String routingKey, Message message)Basic RPC pattern.MessagesendAndReceive(String exchange, String routingKey, Message message, CorrelationData correlationData)MessagesendAndReceive(String routingKey, Message message)Basic RPC pattern.MessagesendAndReceive(String routingKey, Message message, CorrelationData correlationData)MessagesendAndReceive(Message message)Basic RPC pattern.MessagesendAndReceive(Message message, CorrelationData correlationData)protected voidsendToRabbit(com.rabbitmq.client.Channel channel, String exchange, String routingKey, boolean mandatory, Message message)voidsetAfterReceivePostProcessors(MessagePostProcessor... afterReceivePostProcessors)Set aMessagePostProcessorthat will be invoked immediately after aChannel#basicGet()and before any message conversion is performed.voidsetBeanFactory(BeanFactory beanFactory)voidsetBeanName(String name)voidsetBeforePublishPostProcessors(MessagePostProcessor... beforePublishPostProcessors)SetMessagePostProcessors that will be invoked immediately before invokingChannel#basicPublish(), after all other processing, except creating theAMQP.BasicPropertiesfromMessageProperties.voidsetConfirmCallback(RabbitTemplate.ConfirmCallback confirmCallback)voidsetConnectionFactory(ConnectionFactory connectionFactory)Set the ConnectionFactory to use for obtaining RabbitMQConnections.voidsetCorrelationDataPostProcessor(CorrelationDataPostProcessor correlationDataPostProcessor)Set aCorrelationDataPostProcessorto be invoked before publishing a message.voidsetCorrelationKey(String correlationKey)If set to 'correlationId' (default) the correlationId property will be used; otherwise the supplied key will be used.voidsetDefaultReceiveQueue(String queue)The name of the default queue to receive messages from when none is specified explicitly.voidsetEncoding(String encoding)The encoding to use when converting between byte arrays and Strings in message properties.voidsetExchange(String exchange)The name of the default exchange to use for send operations when none is specified.voidsetMandatory(boolean mandatory)Set the mandatory flag when sending messages; only applies if areturnCallbackhad been provided.voidsetMandatoryExpression(Expression mandatoryExpression)voidsetMandatoryExpressionString(String mandatoryExpression)voidsetMessageConverter(MessageConverter messageConverter)Set the message converter for this template.voidsetMessagePropertiesConverter(MessagePropertiesConverter messagePropertiesConverter)Set theMessagePropertiesConverterfor this template.voidsetNoLocalReplyConsumer(boolean noLocalReplyConsumer)Set to true for a no-local consumer.voidsetReceiveConnectionFactorySelectorExpression(Expression receiveConnectionFactorySelectorExpression)A SpELExpressionto evaluate against eachreceivequeueName, if the providedRabbitAccessor.getConnectionFactory()is an instance ofAbstractRoutingConnectionFactory.voidsetReceiveTimeout(long receiveTimeout)Specify the receive timeout in milliseconds when usingreceive()methods (forsendAndReceive()methods, refer toreplyTimeout.voidsetRecoveryCallback(org.springframework.retry.RecoveryCallback<?> recoveryCallback)Add aRecoveryCallbackwhich is used for theretryTemplate.execute.voidsetReplyAddress(String replyAddress)An address for replies; if not provided, a temporary exclusive, auto-delete queue will be used for each reply, unless RabbitMQ supports 'amq.rabbitmq.reply-to' - see https://www.rabbitmq.com/direct-reply-to.htmlvoidsetReplyErrorHandler(ErrorHandler replyErrorHandler)When using a direct reply-to container for request/reply operations, set an error handler to be invoked when a reply delivery fails (e.g.voidsetReplyTimeout(long replyTimeout)Specify the timeout in milliseconds to be used when waiting for a reply Message when using one of the sendAndReceive methods.voidsetRetryTemplate(org.springframework.retry.support.RetryTemplate retryTemplate)Add aRetryTemplatewhich will be used for all rabbit operations.voidsetReturnCallback(RabbitTemplate.ReturnCallback returnCallback)Deprecated.in favor ofsetReturnsCallback(ReturnsCallback).voidsetReturnsCallback(RabbitTemplate.ReturnsCallback returnCallback)voidsetRoutingKey(String routingKey)The value of a default routing key to use for send operations when none is specified.voidsetSendConnectionFactorySelectorExpression(Expression sendConnectionFactorySelectorExpression)A SpELExpressionto evaluate against each request message, if the providedRabbitAccessor.getConnectionFactory()is an instance ofAbstractRoutingConnectionFactory.voidsetTaskExecutor(Executor taskExecutor)Set a task executor to use when using aDirectReplyToMessageListenerContainer.voidsetUseChannelForCorrelation(boolean useChannelForCorrelation)When using direct reply-to, set this to true to avoid the server needing to send the correlation id in a reply header.voidsetUseDirectReplyToContainer(boolean useDirectReplyToContainer)Set whether or not to use aDirectReplyToMessageListenerContainerwhen direct reply-to is available and being used.voidsetUsePublisherConnection(boolean usePublisherConnection)To avoid deadlocked connections, it is generally recommended to use a separate connection for publishers and consumers (except when a publisher is participating in a consumer transaction).voidsetUserCorrelationId(boolean userCorrelationId)Set to true to use correlation id provided by the message instead of generating the correlation id for request/reply scenarios.voidsetUserIdExpression(Expression userIdExpression)Set an expression to be evaluated to set the userId message property if it evaluates to a non-null value and the property is not already set in the message to be sent.voidsetUserIdExpressionString(String userIdExpression)Set an expression to be evaluated to set the userId message property if it evaluates to a non-null value and the property is not already set in the message to be sent.voidsetUseTemporaryReplyQueues(boolean value)By default, when the broker supports it and noreplyAddressis provided, send/receive methods will use Direct reply-to (https://www.rabbitmq.com/direct-reply-to.html).voidstart()voidstop()protected booleanuseDirectReplyTo()Override this method use some other criteria to decide whether or not to use direct reply-to (https://www.rabbitmq.com/direct-reply-to.html).booleanwaitForConfirms(long timeout)Delegate to the underlying dedicated channel to wait for confirms.voidwaitForConfirmsOrDie(long timeout)Delegate to the underlying dedicated channel to wait for confirms.-
Methods inherited from class org.springframework.amqp.rabbit.connection.RabbitAccessor
afterPropertiesSet, convertRabbitAccessException, createConnection, getChannel, getConnection, getConnectionFactory, getTransactionalResourceHolder, isChannelTransacted, setChannelTransacted
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener
onMessageBatch
-
Methods inherited from interface org.springframework.amqp.core.MessageListener
containerAckMode, isAsyncReplies, onMessageBatch
-
Methods inherited from interface org.springframework.amqp.rabbit.core.RabbitOperations
convertSendAndReceiveAsType, getConnectionFactory, invoke
-
-
-
-
Constructor Detail
-
RabbitTemplate
public RabbitTemplate()
Convenient constructor for use with setter injection. Don't forget to set the connection factory.
-
RabbitTemplate
public RabbitTemplate(ConnectionFactory connectionFactory)
Create a rabbit template with default strategies and settings.- Parameters:
connectionFactory- the connection factory to use
-
-
Method Detail
-
initDefaultStrategies
protected void initDefaultStrategies()
Set up the default strategies. Subclasses can override if necessary.
-
setConnectionFactory
public final void setConnectionFactory(ConnectionFactory connectionFactory)
Description copied from class:RabbitAccessorSet the ConnectionFactory to use for obtaining RabbitMQConnections.- Overrides:
setConnectionFactoryin classRabbitAccessor- Parameters:
connectionFactory- The connection factory.
-
setExchange
public void setExchange(@Nullable String exchange)
The name of the default exchange to use for send operations when none is specified. Defaults to""which is the default exchange in the broker (per the AMQP specification).- Parameters:
exchange- the exchange name to use for send operations
-
getExchange
public String getExchange()
- Returns:
- the name of the default exchange used by this template.
- Since:
- 1.6
-
setRoutingKey
public void setRoutingKey(String routingKey)
The value of a default routing key to use for send operations when none is specified. Default is empty which is not helpful when using the default (or any direct) exchange, but fine if the exchange is a headers exchange for instance.- Parameters:
routingKey- the default routing key to use for send operations
-
getRoutingKey
public String getRoutingKey()
- Returns:
- the default routing key used by this template.
- Since:
- 1.6
-
setDefaultReceiveQueue
public void setDefaultReceiveQueue(String queue)
The name of the default queue to receive messages from when none is specified explicitly.- Parameters:
queue- the default queue name to use for receive- Since:
- 2.1.2
-
getDefaultReceiveQueue
@Nullable public String getDefaultReceiveQueue()
Return the configured default receive queue.- Returns:
- the queue or null if not configured.
- Since:
- 2.2.22
-
setEncoding
public void setEncoding(String encoding)
The encoding to use when converting between byte arrays and Strings in message properties.- Parameters:
encoding- the encoding to set
-
getEncoding
public String getEncoding()
The encoding used when converting between byte arrays and Strings in message properties.- Returns:
- the encoding.
-
setReplyAddress
public void setReplyAddress(String replyAddress)
An address for replies; if not provided, a temporary exclusive, auto-delete queue will be used for each reply, unless RabbitMQ supports 'amq.rabbitmq.reply-to' - see https://www.rabbitmq.com/direct-reply-to.htmlThe address can be a simple queue name (in which case the reply will be routed via the default exchange), or with the form
exchange/routingKeyto route the reply using an explicit exchange and routing key.- Parameters:
replyAddress- the replyAddress to set
-
setReceiveTimeout
public void setReceiveTimeout(long receiveTimeout)
Specify the receive timeout in milliseconds when usingreceive()methods (forsendAndReceive()methods, refer toreplyTimeout. By default, the value is zero, which means thereceive()methods will returnnullimmediately if there is no message available. Set to less than zero to wait for a message indefinitely.- Parameters:
receiveTimeout- the timeout.- Since:
- 1.5
-
setReplyTimeout
public void setReplyTimeout(long replyTimeout)
Specify the timeout in milliseconds to be used when waiting for a reply Message when using one of the sendAndReceive methods. The default value is defined asDEFAULT_REPLY_TIMEOUT. A negative value indicates an indefinite timeout. Not used in the plain receive methods because there is no blocking receive operation defined in the protocol.- Parameters:
replyTimeout- the reply timeout in milliseconds- See Also:
sendAndReceive(String, String, Message),convertSendAndReceive(String, String, Object)
-
setMessageConverter
public void setMessageConverter(MessageConverter messageConverter)
Set the message converter for this template. Used to resolve Object parameters to convertAndSend methods and Object results from receiveAndConvert methods.The default converter is a SimpleMessageConverter, which is able to handle byte arrays, Strings, and Serializable Objects depending on the message content type header.
- Parameters:
messageConverter- The message converter.- See Also:
convertAndSend(java.lang.Object),receiveAndConvert(),SimpleMessageConverter
-
setMessagePropertiesConverter
public void setMessagePropertiesConverter(MessagePropertiesConverter messagePropertiesConverter)
Set theMessagePropertiesConverterfor this template. This converter is used to convert between raw byte content in the message headers and plain Java objects. In particular there are limitations when dealing with very long string headers, which hopefully are rare in practice, but if you need to use long headers you might need to inject a special converter here.- Parameters:
messagePropertiesConverter- The message properties converter.
-
getMessagePropertiesConverter
protected MessagePropertiesConverter getMessagePropertiesConverter()
Return the properties converter.- Returns:
- the converter.
- Since:
- 2.0
-
getMessageConverter
public MessageConverter getMessageConverter()
Return the message converter for this template. Useful for clients that want to take advantage of the converter inChannelCallbackimplementations.- Returns:
- The message converter.
-
setConfirmCallback
public void setConfirmCallback(RabbitTemplate.ConfirmCallback confirmCallback)
-
setReturnCallback
@Deprecated public void setReturnCallback(RabbitTemplate.ReturnCallback returnCallback)
Deprecated.in favor ofsetReturnsCallback(ReturnsCallback).Set a callback to receive returned messages.- Parameters:
returnCallback- the callback.
-
setReturnsCallback
public void setReturnsCallback(RabbitTemplate.ReturnsCallback returnCallback)
-
setMandatory
public void setMandatory(boolean mandatory)
Set the mandatory flag when sending messages; only applies if areturnCallbackhad been provided.- Parameters:
mandatory- the mandatory to set.
-
setMandatoryExpression
public void setMandatoryExpression(Expression mandatoryExpression)
- Parameters:
mandatoryExpression- a SpELExpressionto evaluate against each request message, if areturnCallbackhas been provided. The result of the evaluation must be abooleanvalue.- Since:
- 1.4
-
setMandatoryExpressionString
public void setMandatoryExpressionString(String mandatoryExpression)
- Parameters:
mandatoryExpression- a SpELExpressionto evaluate against each request message, if areturnCallbackhas been provided. The result of the evaluation must be abooleanvalue.- Since:
- 2.0
-
setSendConnectionFactorySelectorExpression
public void setSendConnectionFactorySelectorExpression(Expression sendConnectionFactorySelectorExpression)
A SpELExpressionto evaluate against each request message, if the providedRabbitAccessor.getConnectionFactory()is an instance ofAbstractRoutingConnectionFactory.The result of this expression is used as
lookupKeyto get the targetConnectionFactoryfromAbstractRoutingConnectionFactorydirectly.If this expression is evaluated to
null, we fallback to the normalAbstractRoutingConnectionFactorylogic.If there is no target
ConnectionFactorywith the evaluatedlookupKey, we fallback to the normalAbstractRoutingConnectionFactorylogic only if its propertylenientFallback == true.This expression is used for
sendoperations.- Parameters:
sendConnectionFactorySelectorExpression- a SpELExpressionto evaluate- Since:
- 1.4
-
setReceiveConnectionFactorySelectorExpression
public void setReceiveConnectionFactorySelectorExpression(Expression receiveConnectionFactorySelectorExpression)
A SpELExpressionto evaluate against eachreceivequeueName, if the providedRabbitAccessor.getConnectionFactory()is an instance ofAbstractRoutingConnectionFactory.The result of this expression is used as
lookupKeyto get the targetConnectionFactoryfromAbstractRoutingConnectionFactorydirectly.If this expression is evaluated to
null, we fallback to the normalAbstractRoutingConnectionFactorylogic.If there is no target
ConnectionFactorywith the evaluatedlookupKey, we fallback to the normalAbstractRoutingConnectionFactorylogic only if its propertylenientFallback == true.This expression is used for
receiveoperations.- Parameters:
receiveConnectionFactorySelectorExpression- a SpELExpressionto evaluate- Since:
- 1.4
-
setCorrelationKey
public void setCorrelationKey(String correlationKey)
If set to 'correlationId' (default) the correlationId property will be used; otherwise the supplied key will be used.- Parameters:
correlationKey- the correlationKey to set
-
setRetryTemplate
public void setRetryTemplate(org.springframework.retry.support.RetryTemplate retryTemplate)
Add aRetryTemplatewhich will be used for all rabbit operations.- Parameters:
retryTemplate- The retry template.
-
setRecoveryCallback
public void setRecoveryCallback(org.springframework.retry.RecoveryCallback<?> recoveryCallback)
Add aRecoveryCallbackwhich is used for theretryTemplate.execute. IfretryTemplateisn't providedrecoveryCallbackis ignored.RecoveryCallbackshould produce result compatible withexecute(ChannelCallback)return type.- Parameters:
recoveryCallback- The retry recoveryCallback.- Since:
- 1.4
-
setBeanFactory
public void setBeanFactory(BeanFactory beanFactory) throws BeansException
- Specified by:
setBeanFactoryin interfaceBeanFactoryAware- Throws:
BeansException
-
setBeforePublishPostProcessors
public void setBeforePublishPostProcessors(MessagePostProcessor... beforePublishPostProcessors)
SetMessagePostProcessors that will be invoked immediately before invokingChannel#basicPublish(), after all other processing, except creating theAMQP.BasicPropertiesfromMessageProperties. May be used for operations such as compression. Processors are invoked in order, depending onPriorityOrder,Orderand finally unordered.- Parameters:
beforePublishPostProcessors- the post processor.- Since:
- 1.4.2
- See Also:
addBeforePublishPostProcessors(MessagePostProcessor...)
-
addBeforePublishPostProcessors
public void addBeforePublishPostProcessors(MessagePostProcessor... beforePublishPostProcessors)
AddMessagePostProcessorthat will be invoked immediately before invokingChannel#basicPublish(), after all other processing, except creating theAMQP.BasicPropertiesfromMessageProperties. May be used for operations such as compression. Processors are invoked in order, depending onPriorityOrder,Orderand finally unordered.In contrast to
setBeforePublishPostProcessors(MessagePostProcessor...), this method does not override the previously added beforePublishPostProcessors.- Parameters:
beforePublishPostProcessors- the post processor.- Since:
- 2.1.4
-
removeBeforePublishPostProcessor
public boolean removeBeforePublishPostProcessor(MessagePostProcessor beforePublishPostProcessor)
Remove the providedMessagePostProcessorfrom thebeforePublishPostProcessorslist.- Parameters:
beforePublishPostProcessor- the MessagePostProcessor to remove.- Returns:
- the boolean if the provided post processor has been removed.
- Since:
- 2.1.4
- See Also:
addBeforePublishPostProcessors(MessagePostProcessor...)
-
setAfterReceivePostProcessors
public void setAfterReceivePostProcessors(MessagePostProcessor... afterReceivePostProcessors)
Set aMessagePostProcessorthat will be invoked immediately after aChannel#basicGet()and before any message conversion is performed. May be used for operations such as decompression. Processors are invoked in order, depending onPriorityOrder,Orderand finally unordered.- Parameters:
afterReceivePostProcessors- the post processor.- Since:
- 1.5
- See Also:
addAfterReceivePostProcessors(MessagePostProcessor...)
-
getAfterReceivePostProcessors
@Nullable public Collection<MessagePostProcessor> getAfterReceivePostProcessors()
Return configured after receiveMessagePostProcessors ornull.- Returns:
- configured after receive
MessagePostProcessors ornull. - Since:
- 2.1.5
-
addAfterReceivePostProcessors
public void addAfterReceivePostProcessors(MessagePostProcessor... afterReceivePostProcessors)
AddMessagePostProcessorthat will be invoked immediately after aChannel#basicGet()and before any message conversion is performed. May be used for operations such as decompression. Processors are invoked in order, depending onPriorityOrder,Orderand finally unordered.In contrast to
setAfterReceivePostProcessors(MessagePostProcessor...), this method does not override the previously added afterReceivePostProcessors.- Parameters:
afterReceivePostProcessors- the post processor.- Since:
- 2.1.4
-
removeAfterReceivePostProcessor
public boolean removeAfterReceivePostProcessor(MessagePostProcessor afterReceivePostProcessor)
Remove the providedMessagePostProcessorfrom theafterReceivePostProcessorslist.- Parameters:
afterReceivePostProcessor- the MessagePostProcessor to remove.- Returns:
- the boolean if the provided post processor has been removed.
- Since:
- 2.1.4
- See Also:
addAfterReceivePostProcessors(MessagePostProcessor...)
-
setCorrelationDataPostProcessor
public void setCorrelationDataPostProcessor(CorrelationDataPostProcessor correlationDataPostProcessor)
Set aCorrelationDataPostProcessorto be invoked before publishing a message. Correlation data is used to correlate publisher confirms.- Parameters:
correlationDataPostProcessor- the post processor.- Since:
- 1.6.7
- See Also:
setConfirmCallback(ConfirmCallback)
-
setUseTemporaryReplyQueues
public void setUseTemporaryReplyQueues(boolean value)
By default, when the broker supports it and noreplyAddressis provided, send/receive methods will use Direct reply-to (https://www.rabbitmq.com/direct-reply-to.html). Setting this property to true will override that behavior and use a temporary, auto-delete, queue for each request instead. Changing this property has no effect once the first request has been processed.- Parameters:
value- true to use temporary queues.- Since:
- 1.6
-
setUseDirectReplyToContainer
public void setUseDirectReplyToContainer(boolean useDirectReplyToContainer)
Set whether or not to use aDirectReplyToMessageListenerContainerwhen direct reply-to is available and being used. When false, a new consumer is created for each request (the mechanism used in versions prior to 2.0). Default true.- Parameters:
useDirectReplyToContainer- set to false to use a consumer per request.- Since:
- 2.0
- See Also:
setUseTemporaryReplyQueues(boolean)
-
setUserIdExpression
public void setUserIdExpression(Expression userIdExpression)
Set an expression to be evaluated to set the userId message property if it evaluates to a non-null value and the property is not already set in the message to be sent. See https://www.rabbitmq.com/validated-user-id.html- Parameters:
userIdExpression- the expression.- Since:
- 1.6
-
setUserIdExpressionString
public void setUserIdExpressionString(String userIdExpression)
Set an expression to be evaluated to set the userId message property if it evaluates to a non-null value and the property is not already set in the message to be sent. See https://www.rabbitmq.com/validated-user-id.html- Parameters:
userIdExpression- the expression.- Since:
- 1.6
-
setBeanName
public void setBeanName(String name)
- Specified by:
setBeanNamein interfaceBeanNameAware
-
setTaskExecutor
public void setTaskExecutor(Executor taskExecutor)
Set a task executor to use when using aDirectReplyToMessageListenerContainer.- Parameters:
taskExecutor- the executor.- Since:
- 2.0
-
setUserCorrelationId
public void setUserCorrelationId(boolean userCorrelationId)
Set to true to use correlation id provided by the message instead of generating the correlation id for request/reply scenarios. The correlation id must be unique for all in-process requests to avoid cross talk.Users must therefore take create care to ensure uniqueness.
- Parameters:
userCorrelationId- true to use user correlation data.
-
isUsePublisherConnection
public boolean isUsePublisherConnection()
True if separate publisher connection(s) are used.- Returns:
- true or false.
- Since:
- 2.0.2
- See Also:
setUsePublisherConnection(boolean)
-
setUsePublisherConnection
public void setUsePublisherConnection(boolean usePublisherConnection)
To avoid deadlocked connections, it is generally recommended to use a separate connection for publishers and consumers (except when a publisher is participating in a consumer transaction). Default 'false'. When setting this to true, be careful in that aRabbitAdminthat uses this template will declare queues on the publisher connection; this may not be what you expect, especially with exclusive queues that might be consumed in this application.- Parameters:
usePublisherConnection- true to use a publisher connection.- Since:
- 2.0.2
-
setNoLocalReplyConsumer
public void setNoLocalReplyConsumer(boolean noLocalReplyConsumer)
Set to true for a no-local consumer. Defaults to false.- Parameters:
noLocalReplyConsumer- true for a no-local consumer.- Since:
- 2.1
- See Also:
AbstractMessageListenerContainer.setNoLocal(boolean),Channel.basicConsume(String, boolean, String, boolean, boolean, Map, com.rabbitmq.client.Consumer)
-
setReplyErrorHandler
public void setReplyErrorHandler(ErrorHandler replyErrorHandler)
When using a direct reply-to container for request/reply operations, set an error handler to be invoked when a reply delivery fails (e.g. due to a late reply).- Parameters:
replyErrorHandler- the reply error handler- Since:
- 2.0.11
- See Also:
setUseDirectReplyToContainer(boolean)
-
setUseChannelForCorrelation
public void setUseChannelForCorrelation(boolean useChannelForCorrelation)
When using direct reply-to, set this to true to avoid the server needing to send the correlation id in a reply header. Use the channel to correlate the reply to a request instead.- Parameters:
useChannelForCorrelation- true to use the channel.- Since:
- 2.3.7
-
expectedQueueNames
@Nullable public Collection<String> expectedQueueNames()
Invoked by the container during startup so it can verify the queue is correctly configured (if a simple reply queue name is used instead of exchange/routingKey).- Specified by:
expectedQueueNamesin interfaceListenerContainerAware- Returns:
- the queue name, if configured.
- Since:
- 1.5
-
getUnconfirmed
@Nullable public Collection<CorrelationData> getUnconfirmed(long age)
Gets unconfirmed correlation data older than age and removes them.- Parameters:
age- in milliseconds- Returns:
- the collection of correlation data for which confirms have not been received or null if no such confirms exist.
-
getUnconfirmedCount
public int getUnconfirmedCount()
Gets unconfirmed messages count.- Returns:
- The count of the messages that are not confirmed yet by RabbitMQ.
- Since:
- 2.0
-
start
public void start()
- Specified by:
startin interfaceLifecycle- Specified by:
startin interfaceRabbitOperations
-
doStart
protected void doStart()
Perform additional start actions.- Since:
- 2.0
-
stop
public void stop()
- Specified by:
stopin interfaceLifecycle- Specified by:
stopin interfaceRabbitOperations
-
doStop
protected void doStop()
Perform additional stop actions.- Since:
- 2.0
-
isRunning
public boolean isRunning()
- Specified by:
isRunningin interfaceLifecycle- Specified by:
isRunningin interfaceRabbitOperations
-
destroy
public void destroy()
- Specified by:
destroyin interfaceDisposableBean
-
useDirectReplyTo
protected boolean useDirectReplyTo()
Override this method use some other criteria to decide whether or not to use direct reply-to (https://www.rabbitmq.com/direct-reply-to.html). The default implementation returns true if the broker supports it and there is noreplyAddressset anduseTemporaryReplyQueuesis false. When direct reply-to is not used, the template will create a temporary, exclusive, auto-delete queue for the reply.This method is invoked once only - when the first message is sent, from a synchronized block.
- Returns:
- true to use direct reply-to.
-
send
public void send(Message message) throws AmqpException
Description copied from interface:AmqpTemplateSend a message to a default exchange with a default routing key.- Specified by:
sendin interfaceAmqpTemplate- Parameters:
message- a message to send- Throws:
AmqpException- if there is a problem
-
send
public void send(String routingKey, Message message) throws AmqpException
Description copied from interface:AmqpTemplateSend a message to a default exchange with a specific routing key.- Specified by:
sendin interfaceAmqpTemplate- Parameters:
routingKey- the routing keymessage- a message to send- Throws:
AmqpException- if there is a problem
-
send
public void send(String routingKey, Message message, CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsSend a message to the default exchange with a specific routing key.- Specified by:
sendin interfaceRabbitOperations- Parameters:
routingKey- the routing keymessage- a message to sendcorrelationData- data to correlate publisher confirms.- Throws:
AmqpException- if there is a problem
-
send
public void send(String exchange, String routingKey, Message message) throws AmqpException
Description copied from interface:AmqpTemplateSend a message to a specific exchange with a specific routing key.- Specified by:
sendin interfaceAmqpTemplate- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to send- Throws:
AmqpException- if there is a problem
-
send
public void send(String exchange, String routingKey, Message message, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsSend a message to a specific exchange with a specific routing key.- Specified by:
sendin interfaceRabbitOperations- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendcorrelationData- data to correlate publisher confirms.- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(Object object) throws AmqpException
Description copied from interface:AmqpTemplateConvert a Java object to an AmqpMessageand send it to a default exchange with a default routing key.- Specified by:
convertAndSendin interfaceAmqpTemplate- Parameters:
object- a message to send- Throws:
AmqpException- if there is a problem
-
correlationConvertAndSend
public void correlationConvertAndSend(Object object, CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsConvert a Java object to an AmqpMessageand send it to a default exchange with a default routing key.- Specified by:
correlationConvertAndSendin interfaceRabbitOperations- Parameters:
object- a message to sendcorrelationData- data to correlate publisher confirms.- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(String routingKey, Object object) throws AmqpException
Description copied from interface:AmqpTemplateConvert a Java object to an AmqpMessageand send it to a default exchange with a specific routing key.- Specified by:
convertAndSendin interfaceAmqpTemplate- Parameters:
routingKey- the routing keyobject- a message to send- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(String routingKey, Object object, CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsConvert a Java object to an AmqpMessageand send it to a default exchange with a specific routing key.- Specified by:
convertAndSendin interfaceRabbitOperations- Parameters:
routingKey- the routing keyobject- a message to sendcorrelationData- data to correlate publisher confirms.- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(String exchange, String routingKey, Object object) throws AmqpException
Description copied from interface:AmqpTemplateConvert a Java object to an AmqpMessageand send it to a specific exchange with a specific routing key.- Specified by:
convertAndSendin interfaceAmqpTemplate- Parameters:
exchange- the name of the exchangeroutingKey- the routing keyobject- a message to send- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(String exchange, String routingKey, Object object, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsConvert a Java object to an AmqpMessageand send it to a specific exchange with a specific routing key.- Specified by:
convertAndSendin interfaceRabbitOperations- Parameters:
exchange- the name of the exchangeroutingKey- the routing keyobject- a message to sendcorrelationData- data to correlate publisher confirms.- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(Object message, MessagePostProcessor messagePostProcessor) throws AmqpException
Description copied from interface:AmqpTemplateConvert a Java object to an AmqpMessageand send it to a default exchange with a default routing key.- Specified by:
convertAndSendin interfaceAmqpTemplate- Parameters:
message- a message to sendmessagePostProcessor- a processor to apply to the message before it is sent- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(String routingKey, Object message, MessagePostProcessor messagePostProcessor) throws AmqpException
Description copied from interface:AmqpTemplateConvert a Java object to an AmqpMessageand send it to a default exchange with a specific routing key.- Specified by:
convertAndSendin interfaceAmqpTemplate- Parameters:
routingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sent- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsConvert a Java object to an AmqpMessageand send it to a default exchange with a default routing key.- Specified by:
convertAndSendin interfaceRabbitOperations- Parameters:
message- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(String routingKey, Object message, MessagePostProcessor messagePostProcessor, CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsConvert a Java object to an AmqpMessageand send it to a default exchange with a specific routing key.- Specified by:
convertAndSendin interfaceRabbitOperations- Parameters:
routingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor) throws AmqpException
Description copied from interface:AmqpTemplateConvert a Java object to an AmqpMessageand send it to a specific exchange with a specific routing key.- Specified by:
convertAndSendin interfaceAmqpTemplate- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sent- Throws:
AmqpException- if there is a problem
-
convertAndSend
public void convertAndSend(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsConvert a Java object to an AmqpMessageand send it to a specific exchange with a specific routing key.- Specified by:
convertAndSendin interfaceRabbitOperations- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.- Throws:
AmqpException- if there is a problem
-
receive
@Nullable public Message receive() throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a default queue. Returns immediately, possibly with a null value.- Specified by:
receivein interfaceAmqpTemplate- Returns:
- a message or null if there is none waiting
- Throws:
AmqpException- if there is a problem
-
receive
@Nullable public Message receive(String queueName)
Description copied from interface:AmqpTemplateReceive a message if there is one from a specific queue. Returns immediately, possibly with a null value.- Specified by:
receivein interfaceAmqpTemplate- Parameters:
queueName- the name of the queue to poll- Returns:
- a message or null if there is none waiting
-
doReceiveNoWait
@Nullable protected Message doReceiveNoWait(String queueName)
Non-blocking receive.- Parameters:
queueName- the queue to receive from.- Returns:
- The message, or null if none immediately available.
- Since:
- 1.5
-
receive
@Nullable public Message receive(long timeoutMillis) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message from a default queue, waiting up to the specified wait time if necessary for a message to become available.- Specified by:
receivein interfaceAmqpTemplate- Parameters:
timeoutMillis- how long to wait before giving up. Zero value means the method will returnnullimmediately if there is no message available. Negative value makes method wait for a message indefinitely.- Returns:
- a message or null if the time expires
- Throws:
AmqpException- if there is a problem
-
receive
@Nullable public Message receive(String queueName, long timeoutMillis)
Description copied from interface:AmqpTemplateReceive a message from a specific queue, waiting up to the specified wait time if necessary for a message to become available.- Specified by:
receivein interfaceAmqpTemplate- Parameters:
queueName- the queue to receive fromtimeoutMillis- how long to wait before giving up. Zero value means the method will returnnullimmediately if there is no message available. Negative value makes method wait for a message indefinitely.- Returns:
- a message or null if the time expires
-
receiveAndConvert
@Nullable public Object receiveAndConvert() throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a default queue and convert it to a Java object. Returns immediately, possibly with a null value.- Specified by:
receiveAndConvertin interfaceAmqpTemplate- Returns:
- a message or null if there is none waiting
- Throws:
AmqpException- if there is a problem
-
receiveAndConvert
@Nullable public Object receiveAndConvert(String queueName) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a specific queue and convert it to a Java object. Returns immediately, possibly with a null value.- Specified by:
receiveAndConvertin interfaceAmqpTemplate- Parameters:
queueName- the name of the queue to poll- Returns:
- a message or null if there is none waiting
- Throws:
AmqpException- if there is a problem
-
receiveAndConvert
@Nullable public Object receiveAndConvert(long timeoutMillis) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a default queue and convert it to a Java object. Wait up to the specified wait time if necessary for a message to become available.- Specified by:
receiveAndConvertin interfaceAmqpTemplate- Parameters:
timeoutMillis- how long to wait before giving up. Zero value means the method will returnnullimmediately if there is no message available. Negative value makes method wait for a message indefinitely.- Returns:
- a message or null if the time expires
- Throws:
AmqpException- if there is a problem
-
receiveAndConvert
@Nullable public Object receiveAndConvert(String queueName, long timeoutMillis) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a specific queue and convert it to a Java object. Wait up to the specified wait time if necessary for a message to become available.- Specified by:
receiveAndConvertin interfaceAmqpTemplate- Parameters:
queueName- the name of the queue to polltimeoutMillis- how long to wait before giving up. Zero value means the method will returnnullimmediately if there is no message available. Negative value makes method wait for a message indefinitely.- Returns:
- a message or null if the time expires
- Throws:
AmqpException- if there is a problem
-
receiveAndConvert
@Nullable public <T> T receiveAndConvert(ParameterizedTypeReference<T> type) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a default queue and convert it to a Java object. Returns immediately, possibly with a null value. Requires aSmartMessageConverter.- Specified by:
receiveAndConvertin interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
type- the type to convert to.- Returns:
- a message or null if there is none waiting.
- Throws:
AmqpException- if there is a problem.
-
receiveAndConvert
@Nullable public <T> T receiveAndConvert(String queueName, ParameterizedTypeReference<T> type) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a specific queue and convert it to a Java object. Returns immediately, possibly with a null value. Requires aSmartMessageConverter.- Specified by:
receiveAndConvertin interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
queueName- the name of the queue to polltype- the type to convert to.- Returns:
- a message or null if there is none waiting
- Throws:
AmqpException- if there is a problem
-
receiveAndConvert
@Nullable public <T> T receiveAndConvert(long timeoutMillis, ParameterizedTypeReference<T> type) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a default queue and convert it to a Java object. Wait up to the specified wait time if necessary for a message to become available. Requires aSmartMessageConverter.- Specified by:
receiveAndConvertin interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
timeoutMillis- how long to wait before giving up. Zero value means the method will returnnullimmediately if there is no message available. Negative value makes method wait for a message indefinitely.type- the type to convert to.- Returns:
- a message or null if the time expires
- Throws:
AmqpException- if there is a problem
-
receiveAndConvert
@Nullable public <T> T receiveAndConvert(String queueName, long timeoutMillis, ParameterizedTypeReference<T> type) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a specific queue and convert it to a Java object. Wait up to the specified wait time if necessary for a message to become available. Requires aSmartMessageConverter.- Specified by:
receiveAndConvertin interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
queueName- the name of the queue to polltimeoutMillis- how long to wait before giving up. Zero value means the method will returnnullimmediately if there is no message available. Negative value makes method wait for a message indefinitely.type- the type to convert to.- Returns:
- a message or null if the time expires
- Throws:
AmqpException- if there is a problem
-
receiveAndReply
public <R,S> boolean receiveAndReply(ReceiveAndReplyCallback<R,S> callback) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a default queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to thereplyToAddressfromMessagePropertiesor to default exchange and default routingKey.- Specified by:
receiveAndReplyin interfaceAmqpTemplate- Type Parameters:
R- The type of the request after conversion from theMessage.S- The type of the response.- Parameters:
callback- a user-providedReceiveAndReplyCallbackimplementation to process received message and return a reply message.- Returns:
true, if message was received- Throws:
AmqpException- if there is a problem
-
receiveAndReply
public <R,S> boolean receiveAndReply(String queueName, ReceiveAndReplyCallback<R,S> callback) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from provided queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to thereplyToAddressfromMessagePropertiesor to default exchange and default routingKey.- Specified by:
receiveAndReplyin interfaceAmqpTemplate- Type Parameters:
R- The type of the request after conversion from theMessage.S- The type of the response.- Parameters:
queueName- the queue name to receive a message.callback- a user-providedReceiveAndReplyCallbackimplementation to process received message and return a reply message.- Returns:
true, if message was received.- Throws:
AmqpException- if there is a problem.
-
receiveAndReply
public <R,S> boolean receiveAndReply(ReceiveAndReplyCallback<R,S> callback, String exchange, String routingKey) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from default queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to the providedexchangeandroutingKey.- Specified by:
receiveAndReplyin interfaceAmqpTemplate- Type Parameters:
R- The type of the request after conversion from theMessage.S- The type of the response.- Parameters:
callback- a user-providedReceiveAndReplyCallbackimplementation to process received message and return a reply message.exchange- the exchange name to send reply message.routingKey- the routing key to send reply message.- Returns:
true, if message was received.- Throws:
AmqpException- if there is a problem.
-
receiveAndReply
public <R,S> boolean receiveAndReply(String queueName, ReceiveAndReplyCallback<R,S> callback, String replyExchange, String replyRoutingKey) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from provided queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to the providedexchangeandroutingKey.- Specified by:
receiveAndReplyin interfaceAmqpTemplate- Type Parameters:
R- The type of the request after conversion from theMessage.S- The type of the response.- Parameters:
queueName- the queue name to receive a message.callback- a user-providedReceiveAndReplyCallbackimplementation to process received message and return a reply message.replyExchange- the exchange name to send reply message.replyRoutingKey- the routing key to send reply message.- Returns:
true, if message was received- Throws:
AmqpException- if there is a problem
-
receiveAndReply
public <R,S> boolean receiveAndReply(ReceiveAndReplyCallback<R,S> callback, ReplyToAddressCallback<S> replyToAddressCallback) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from a default queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to thereplyToAddressfrom result ofReplyToAddressCallback.- Specified by:
receiveAndReplyin interfaceAmqpTemplate- Type Parameters:
R- The type of the request after conversion from theMessage.S- The type of the response.- Parameters:
callback- a user-providedReceiveAndReplyCallbackimplementation to process received message and return a reply message.replyToAddressCallback- the callback to determine replyTo address at runtime.- Returns:
true, if message was received.- Throws:
AmqpException- if there is a problem.
-
receiveAndReply
public <R,S> boolean receiveAndReply(String queueName, ReceiveAndReplyCallback<R,S> callback, ReplyToAddressCallback<S> replyToAddressCallback) throws AmqpException
Description copied from interface:AmqpTemplateReceive a message if there is one from provided queue, invoke providedReceiveAndReplyCallbackand send reply message, if thecallbackreturns one, to thereplyToAddressfrom result ofReplyToAddressCallback.- Specified by:
receiveAndReplyin interfaceAmqpTemplate- Type Parameters:
R- The type of the request after conversion from theMessage.S- The type of the response.- Parameters:
queueName- the queue name to receive a message.callback- a user-providedReceiveAndReplyCallbackimplementation to process received message and return a reply message.replyToAddressCallback- the callback to determine replyTo address at runtime.- Returns:
true, if message was received- Throws:
AmqpException- if there is a problem
-
sendAndReceive
@Nullable public Message sendAndReceive(Message message) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern. Send a message to a default exchange with a default routing key and attempt to receive a response. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
sendAndReceivein interfaceAmqpTemplate- Parameters:
message- a message to send- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
sendAndReceive
@Nullable public Message sendAndReceive(Message message, @Nullable CorrelationData correlationData) throws AmqpException
- Throws:
AmqpException
-
sendAndReceive
@Nullable public Message sendAndReceive(String routingKey, Message message) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern. Send a message to a default exchange with a specific routing key and attempt to receive a response. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
sendAndReceivein interfaceAmqpTemplate- Parameters:
routingKey- the routing keymessage- a message to send- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
sendAndReceive
@Nullable public Message sendAndReceive(String routingKey, Message message, @Nullable CorrelationData correlationData) throws AmqpException
- Throws:
AmqpException
-
sendAndReceive
@Nullable public Message sendAndReceive(String exchange, String routingKey, Message message) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern. Send a message to a specific exchange with a specific routing key and attempt to receive a response. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
sendAndReceivein interfaceAmqpTemplate- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to send- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
sendAndReceive
@Nullable public Message sendAndReceive(String exchange, String routingKey, Message message, @Nullable CorrelationData correlationData) throws AmqpException
- Throws:
AmqpException
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(Object message) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a default routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceAmqpTemplate- Parameters:
message- a message to send- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(Object message, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a default routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceRabbitOperations- Parameters:
message- a message to send.correlationData- data to correlate publisher confirms.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(String routingKey, Object message) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceAmqpTemplate- Parameters:
routingKey- the routing keymessage- a message to send- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(String routingKey, Object message, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceRabbitOperations- Parameters:
routingKey- the routing keymessage- a message to sendcorrelationData- data to correlate publisher confirms.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(String exchange, String routingKey, Object message) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a specific exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceAmqpTemplate- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to send- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(String exchange, String routingKey, Object message, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a specific exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceRabbitOperations- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendcorrelationData- data to correlate publisher confirms.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(Object message, MessagePostProcessor messagePostProcessor) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a default routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceAmqpTemplate- Parameters:
message- a message to sendmessagePostProcessor- a processor to apply to the message before it is sent- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(Object message, MessagePostProcessor messagePostProcessor, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a default routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceRabbitOperations- Parameters:
message- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(String routingKey, Object message, MessagePostProcessor messagePostProcessor) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceAmqpTemplate- Parameters:
routingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sent- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(String routingKey, Object message, MessagePostProcessor messagePostProcessor, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceRabbitOperations- Parameters:
routingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a specific exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceAmqpTemplate- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sent- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceive
@Nullable public Object convertSendAndReceive(String exchange, String routingKey, Object message, @Nullable MessagePostProcessor messagePostProcessor, @Nullable CorrelationData correlationData) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a specific exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout.- Specified by:
convertSendAndReceivein interfaceRabbitOperations- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(Object message, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a default routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
message- a message to send.responseType- the type to convert the reply to.- Returns:
- the response if there is one.
- Throws:
AmqpException- if there is a problem.
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(Object message, @Nullable CorrelationData correlationData, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a default routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceRabbitOperations- Type Parameters:
T- the type.- Parameters:
message- a message to send.correlationData- data to correlate publisher confirms.responseType- the type to convert the reply to.- Returns:
- the response if there is one.
- Throws:
AmqpException- if there is a problem.
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(String routingKey, Object message, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
routingKey- the routing keymessage- a message to sendresponseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(String routingKey, Object message, @Nullable CorrelationData correlationData, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceRabbitOperations- Type Parameters:
T- the type.- Parameters:
routingKey- the routing keymessage- a message to sendcorrelationData- data to correlate publisher confirms.responseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(String exchange, String routingKey, Object message, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a specific exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendresponseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(Object message, @Nullable MessagePostProcessor messagePostProcessor, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a default routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
message- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentresponseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(Object message, @Nullable MessagePostProcessor messagePostProcessor, @Nullable CorrelationData correlationData, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a default routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceRabbitOperations- Type Parameters:
T- the type.- Parameters:
message- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.responseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(String routingKey, Object message, @Nullable MessagePostProcessor messagePostProcessor, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
routingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentresponseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(String routingKey, Object message, @Nullable MessagePostProcessor messagePostProcessor, @Nullable CorrelationData correlationData, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a default exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceRabbitOperations- Type Parameters:
T- the type.- Parameters:
routingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.responseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:AmqpTemplateBasic RPC pattern with conversion. Send a Java object converted to a message to a specific exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceAmqpTemplate- Type Parameters:
T- the type.- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentresponseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveAsType
@Nullable public <T> T convertSendAndReceiveAsType(String exchange, String routingKey, Object message, @Nullable MessagePostProcessor messagePostProcessor, @Nullable CorrelationData correlationData, ParameterizedTypeReference<T> responseType) throws AmqpException
Description copied from interface:RabbitOperationsBasic RPC pattern with conversion. Send a Java object converted to a message to a specific exchange with a specific routing key and attempt to receive a response, converting that to a Java object. Implementations will normally set the reply-to header to an exclusive queue and wait up for some time limited by a timeout. Requires aSmartMessageConverter.- Specified by:
convertSendAndReceiveAsTypein interfaceRabbitOperations- Type Parameters:
T- the type.- Parameters:
exchange- the name of the exchangeroutingKey- the routing keymessage- a message to sendmessagePostProcessor- a processor to apply to the message before it is sentcorrelationData- data to correlate publisher confirms.responseType- the type to convert the reply to.- Returns:
- the response if there is one
- Throws:
AmqpException- if there is a problem
-
convertSendAndReceiveRaw
@Nullable protected Message convertSendAndReceiveRaw(String exchange, String routingKey, Object message, @Nullable MessagePostProcessor messagePostProcessor, @Nullable CorrelationData correlationData)
Convert and send a message and return the raw reply message, or null. Subclasses can invoke this method if they want to perform conversion on the outbound message but have direct access to the reply message before conversion.- Parameters:
exchange- the exchange.routingKey- the routing key.message- the data to send.messagePostProcessor- a message post processor (can be null).correlationData- correlation data (can be null).- Returns:
- the reply message or null if a timeout occurs.
- Since:
- 1.6.6
-
doSendAndReceive
@Nullable protected Message doSendAndReceive(String exchange, String routingKey, Message message, @Nullable CorrelationData correlationData)
Send a message and wait for a reply.- Parameters:
exchange- the exchange nameroutingKey- the routing keymessage- the message to sendcorrelationData- the correlation data for confirms- Returns:
- the message that is received in reply
-
doSendAndReceiveWithTemporary
@Nullable protected Message doSendAndReceiveWithTemporary(String exchange, String routingKey, Message message, @Nullable CorrelationData correlationData)
-
doSendAndReceiveWithFixed
@Nullable protected Message doSendAndReceiveWithFixed(String exchange, String routingKey, Message message, @Nullable CorrelationData correlationData)
-
replyTimedOut
protected void replyTimedOut(String correlationId)
Subclasses can implement this to be notified that a reply has timed out.- Parameters:
correlationId- the correlationId- Since:
- 2.1.2
-
isMandatoryFor
public Boolean isMandatoryFor(Message message)
Return whether the provided message should be sent with the mandatory flag set.- Parameters:
message- the message.- Returns:
- true for mandatory.
- Since:
- 2.0
-
execute
@Nullable public <T> T execute(ChannelCallback<T> action)
Description copied from interface:RabbitOperationsExecute the callback with a channel and reliably close the channel afterwards.- Specified by:
executein interfaceRabbitOperations- Type Parameters:
T- the return type.- Parameters:
action- the call back.- Returns:
- the result from the
ChannelCallback.doInRabbit(com.rabbitmq.client.Channel).
-
invoke
@Nullable public <T> T invoke(RabbitOperations.OperationsCallback<T> action, @Nullable com.rabbitmq.client.ConfirmCallback acks, @Nullable com.rabbitmq.client.ConfirmCallback nacks)
Description copied from interface:RabbitOperationsInvoke operations on the same channel. If callbacks are needed, both callbacks must be supplied.- Specified by:
invokein interfaceRabbitOperations- Type Parameters:
T- the return type.- Parameters:
action- the callback.acks- a confirm callback for acks.nacks- a confirm callback for nacks.- Returns:
- the result of the action method.
-
waitForConfirms
public boolean waitForConfirms(long timeout)
Description copied from interface:RabbitOperationsDelegate to the underlying dedicated channel to wait for confirms. The connection factory must be configured for publisher confirms and this method must be called within the scope of anRabbitOperations.invoke(OperationsCallback)operation. RequiresCachingConnectionFactory#setPublisherConfirms(true).- Specified by:
waitForConfirmsin interfaceRabbitOperations- Parameters:
timeout- the timeout- Returns:
- true if acks and no nacks are received.
- See Also:
Channel.waitForConfirms(long)
-
waitForConfirmsOrDie
public void waitForConfirmsOrDie(long timeout)
Description copied from interface:RabbitOperationsDelegate to the underlying dedicated channel to wait for confirms. The connection factory must be configured for publisher confirms and this method must be called within the scope of anRabbitOperations.invoke(OperationsCallback)operation. RequiresCachingConnectionFactory#setPublisherConfirms(true).- Specified by:
waitForConfirmsOrDiein interfaceRabbitOperations- Parameters:
timeout- the timeout- See Also:
Channel.waitForConfirmsOrDie(long)
-
determineConfirmsReturnsCapability
public void determineConfirmsReturnsCapability(ConnectionFactory connectionFactory)
-
doSend
public void doSend(com.rabbitmq.client.Channel channel, String exchangeArg, String routingKeyArg, Message message, boolean mandatory, @Nullable CorrelationData correlationData) throws IOExceptionSend the given message to the specified exchange.- Parameters:
channel- The RabbitMQ Channel to operate within.exchangeArg- The name of the RabbitMQ exchange to send to.routingKeyArg- The routing key.message- The Message to send.mandatory- The mandatory flag.correlationData- The correlation data.- Throws:
IOException- If thrown by RabbitMQ API methods.
-
nullSafeExchange
public String nullSafeExchange(String exchange)
Return the exchange or the default exchange if null.- Parameters:
exchange- the exchange.- Returns:
- the result.
- Since:
- 2.3.4
-
nullSafeRoutingKey
public String nullSafeRoutingKey(String rk)
Return the routing key or the default routing key if null.- Parameters:
rk- the routing key.- Returns:
- the result.
- Since:
- 2.3.4
-
sendToRabbit
protected void sendToRabbit(com.rabbitmq.client.Channel channel, String exchange, String routingKey, boolean mandatory, Message message) throws IOException- Throws:
IOException
-
isChannelLocallyTransacted
protected boolean isChannelLocallyTransacted(com.rabbitmq.client.Channel channel)
Check whether the given Channel is locally transacted, that is, whether its transaction is managed by this template's Channel handling and not by an external transaction coordinator.- Parameters:
channel- the Channel to check- Returns:
- whether the given Channel is locally transacted
- See Also:
ConnectionFactoryUtils.isChannelTransactional(com.rabbitmq.client.Channel, org.springframework.amqp.rabbit.connection.ConnectionFactory),RabbitAccessor.isChannelTransacted()
-
addListener
public void addListener(com.rabbitmq.client.Channel channel)
Add this template as a confirms listener for the provided channel.- Parameters:
channel- the channel.- Since:
- 2.0
-
handleConfirm
public void handleConfirm(PendingConfirm pendingConfirm, boolean ack)
Description copied from interface:PublisherCallbackChannel.ListenerInvoked by the channel when a confirm is received.- Specified by:
handleConfirmin interfacePublisherCallbackChannel.Listener- Parameters:
pendingConfirm- The pending confirmation, containing correlation data.ack- true when 'ack', false when 'nack'.
-
handleReturn
public void handleReturn(int replyCode, String replyText, String exchange, String routingKey, com.rabbitmq.client.AMQP.BasicProperties properties, byte[] body)Description copied from interface:PublisherCallbackChannel.ListenerHandle a returned message.- Specified by:
handleReturnin interfacePublisherCallbackChannel.Listener- Parameters:
replyCode- the reply code.replyText- the reply text.exchange- the exchange.routingKey- the routing key.properties- the message properties.body- the message body.
-
handleReturn
public void handleReturn(com.rabbitmq.client.Return returned)
Description copied from interface:PublisherCallbackChannel.ListenerHandle a returned message.- Specified by:
handleReturnin interfacePublisherCallbackChannel.Listener- Parameters:
returned- the message and metadata.
-
isConfirmListener
public boolean isConfirmListener()
- Specified by:
isConfirmListenerin interfacePublisherCallbackChannel.Listener
-
isReturnListener
public boolean isReturnListener()
- Specified by:
isReturnListenerin interfacePublisherCallbackChannel.Listener
-
revoke
public void revoke(com.rabbitmq.client.Channel channel)
Description copied from interface:PublisherCallbackChannel.ListenerWhen called, this listener should remove all references to the channel - it will no longer be invoked by the channel.- Specified by:
revokein interfacePublisherCallbackChannel.Listener- Parameters:
channel- The channel.
-
getUUID
public String getUUID()
Description copied from interface:PublisherCallbackChannel.ListenerReturns the UUID used to identify this Listener for returns.- Specified by:
getUUIDin interfacePublisherCallbackChannel.Listener- Returns:
- A string representation of the UUID.
-
onMessage
public void onMessage(Message message, @Nullable com.rabbitmq.client.Channel channel)
Description copied from interface:ChannelAwareMessageListenerCallback for processing a received Rabbit message.Implementors are supposed to process the given Message, typically sending reply messages through the given Session.
- Specified by:
onMessagein interfaceChannelAwareMessageListener- Parameters:
message- the received AMQP message (nevernull)channel- the underlying Rabbit Channel (nevernullunless called by the stream listener container).
-
onMessage
@Deprecated public void onMessage(Message message)
Deprecated.- useonMessage(Message, Channel).Delivers a single message.- Specified by:
onMessagein interfaceChannelAwareMessageListener- Specified by:
onMessagein interfaceMessageListener- Parameters:
message- the message.
-
-