public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations
If you want to use dynamic destination creation, you must specify the type of JMS destination to create, using the "pubSubDomain" property. For other operations, this is not necessary. Point-to-Point (Queues) is the default domain.
Default settings for JMS Sessions are "not transacted" and "auto-acknowledge". As defined by the Java EE specification, the transaction and acknowledgement parameters are ignored when a JMS Session is created inside an active transaction, no matter if a JTA transaction or a Spring-managed transaction. To configure them for native JMS usage, specify appropriate values for the "sessionTransacted" and "sessionAcknowledgeMode" bean properties.
This template uses a
DynamicDestinationResolver
and a SimpleMessageConverter
as default strategies for resolving a destination name or converting a message,
respectively. These defaults can be overridden through the "destinationResolver"
and "messageConverter" bean properties.
NOTE: The ConnectionFactory
used with this template should
return pooled Connections (or a single shared Connection) as well as pooled
Sessions and MessageProducers. Otherwise, performance of ad-hoc JMS operations
is going to suffer. The simplest option is to use the Spring-provided
SingleConnectionFactory
as a
decorator for your target ConnectionFactory
, reusing a single
JMS Connection in a thread-safe fashion; this is often good enough for the
purpose of sending messages via this template. In a Java EE environment,
make sure that the ConnectionFactory
is obtained from the
application's environment naming context via JNDI; application servers
typically expose pooled, transaction-aware factories there.
JmsAccessor.setConnectionFactory(javax.jms.ConnectionFactory)
,
JmsDestinationAccessor.setPubSubDomain(boolean)
,
JmsDestinationAccessor.setDestinationResolver(org.springframework.jms.support.destination.DestinationResolver)
,
setMessageConverter(org.springframework.jms.support.converter.MessageConverter)
,
MessageProducer
,
MessageConsumer
RECEIVE_TIMEOUT_INDEFINITE_WAIT, RECEIVE_TIMEOUT_NO_WAIT
logger
Constructor and Description |
---|
JmsTemplate()
Create a new JmsTemplate for bean-style usage.
|
JmsTemplate(ConnectionFactory connectionFactory)
Create a new JmsTemplate, given a ConnectionFactory.
|
Modifier and Type | Method and Description |
---|---|
<T> T |
browse(BrowserCallback<T> action)
Browse messages in the default JMS queue.
|
<T> T |
browse(Queue queue,
BrowserCallback<T> action)
Browse messages in a JMS queue.
|
<T> T |
browse(String queueName,
BrowserCallback<T> action)
Browse messages in a JMS queue.
|
<T> T |
browseSelected(Queue queue,
String messageSelector,
BrowserCallback<T> action)
Browse selected messages in a JMS queue.
|
<T> T |
browseSelected(String messageSelector,
BrowserCallback<T> action)
Browse selected messages in a JMS queue.
|
<T> T |
browseSelected(String queueName,
String messageSelector,
BrowserCallback<T> action)
Browse selected messages in a JMS queue.
|
void |
convertAndSend(Destination destination,
Object message)
Send the given object to the specified destination, converting the object
to a JMS message with a configured MessageConverter.
|
void |
convertAndSend(Destination destination,
Object message,
MessagePostProcessor postProcessor)
Send the given object to the specified destination, converting the object
to a JMS message with a configured MessageConverter.
|
void |
convertAndSend(Object message)
Send the given object to the default destination, converting the object
to a JMS message with a configured MessageConverter.
|
void |
convertAndSend(Object message,
MessagePostProcessor postProcessor)
Send the given object to the default destination, converting the object
to a JMS message with a configured MessageConverter.
|
void |
convertAndSend(String destinationName,
Object message)
Send the given object to the specified destination, converting the object
to a JMS message with a configured MessageConverter.
|
void |
convertAndSend(String destinationName,
Object message,
MessagePostProcessor postProcessor)
Send the given object to the specified destination, converting the object
to a JMS message with a configured MessageConverter.
|
protected QueueBrowser |
createBrowser(Session session,
Queue queue,
String messageSelector)
Create a JMS MessageProducer for the given Session and Destination,
configuring it to disable message ids and/or timestamps (if necessary).
|
protected MessageConsumer |
createConsumer(Session session,
Destination destination,
String messageSelector)
Create a JMS MessageConsumer for the given Session and Destination.
|
protected MessageProducer |
createProducer(Session session,
Destination destination)
Create a JMS MessageProducer for the given Session and Destination,
configuring it to disable message ids and/or timestamps (if necessary).
|
protected Object |
doConvertFromMessage(Message message)
Extract the content from the given JMS message.
|
protected MessageProducer |
doCreateProducer(Session session,
Destination destination)
Create a raw JMS MessageProducer for the given Session and Destination.
|
protected Message |
doReceive(Session session,
Destination destination,
String messageSelector)
Receive a JMS message.
|
protected Message |
doReceive(Session session,
MessageConsumer consumer)
Actually receive a JMS message.
|
protected void |
doSend(MessageProducer producer,
Message message)
Actually send the given JMS message.
|
protected void |
doSend(Session session,
Destination destination,
MessageCreator messageCreator)
Send the given JMS message.
|
protected Message |
doSendAndReceive(Session session,
Destination destination,
MessageCreator messageCreator)
Send a request message to the given
Destination and block until
a reply has been received on a temporary queue created on-the-fly. |
<T> T |
execute(Destination destination,
ProducerCallback<T> action)
Send messages to a JMS destination.
|
<T> T |
execute(ProducerCallback<T> action)
Send messages to the default JMS destination (or one specified
for each send operation).
|
<T> T |
execute(SessionCallback<T> action)
Execute the action specified by the given action object within a JMS Session.
|
<T> T |
execute(SessionCallback<T> action,
boolean startConnection)
Execute the action specified by the given action object within a
JMS Session.
|
<T> T |
execute(String destinationName,
ProducerCallback<T> action)
Send messages to a JMS destination.
|
protected Connection |
getConnection(JmsResourceHolder holder)
Fetch an appropriate Connection from the given JmsResourceHolder.
|
Destination |
getDefaultDestination()
Return the destination to be used on send/receive operations that do not
have a destination parameter.
|
String |
getDefaultDestinationName()
Return the destination name to be used on send/receive operations that
do not have a destination parameter.
|
long |
getDeliveryDelay()
Return the delivery delay to use for send calls (in milliseconds).
|
int |
getDeliveryMode()
Return the delivery mode to use when sending a message.
|
MessageConverter |
getMessageConverter()
Return the message converter for this template.
|
int |
getPriority()
Return the priority of a message when sending.
|
long |
getReceiveTimeout()
Return the timeout to use for receive calls (in milliseconds).
|
protected Session |
getSession(JmsResourceHolder holder)
Fetch an appropriate Session from the given JmsResourceHolder.
|
long |
getTimeToLive()
Return the time-to-live of the message when sending.
|
protected void |
initDefaultStrategies()
Initialize the default implementations for the template's strategies:
DynamicDestinationResolver and SimpleMessageConverter.
|
boolean |
isExplicitQosEnabled()
If "true", then the values of deliveryMode, priority, and timeToLive
will be used when sending a message.
|
boolean |
isMessageIdEnabled()
Return whether message IDs are enabled.
|
boolean |
isMessageTimestampEnabled()
Return whether message timestamps are enabled.
|
boolean |
isPubSubNoLocal()
Return whether to inhibit the delivery of messages published by its own connection.
|
protected boolean |
isSessionLocallyTransacted(Session session)
Check whether the given Session is locally transacted, that is, whether
its transaction is managed by this listener container's Session handling
and not by an external transaction coordinator.
|
Message |
receive()
Receive a message synchronously from the default destination, but only
wait up to a specified time for delivery.
|
Message |
receive(Destination destination)
Receive a message synchronously from the specified destination, but only
wait up to a specified time for delivery.
|
Message |
receive(String destinationName)
Receive a message synchronously from the specified destination, but only
wait up to a specified time for delivery.
|
Object |
receiveAndConvert()
Receive a message synchronously from the default destination, but only
wait up to a specified time for delivery.
|
Object |
receiveAndConvert(Destination destination)
Receive a message synchronously from the specified destination, but only
wait up to a specified time for delivery.
|
Object |
receiveAndConvert(String destinationName)
Receive a message synchronously from the specified destination, but only
wait up to a specified time for delivery.
|
Message |
receiveSelected(Destination destination,
String messageSelector)
Receive a message synchronously from the specified destination, but only
wait up to a specified time for delivery.
|
Message |
receiveSelected(String messageSelector)
Receive a message synchronously from the default destination, but only
wait up to a specified time for delivery.
|
Message |
receiveSelected(String destinationName,
String messageSelector)
Receive a message synchronously from the specified destination, but only
wait up to a specified time for delivery.
|
Object |
receiveSelectedAndConvert(Destination destination,
String messageSelector)
Receive a message synchronously from the specified destination, but only
wait up to a specified time for delivery.
|
Object |
receiveSelectedAndConvert(String messageSelector)
Receive a message synchronously from the default destination, but only
wait up to a specified time for delivery.
|
Object |
receiveSelectedAndConvert(String destinationName,
String messageSelector)
Receive a message synchronously from the specified destination, but only
wait up to a specified time for delivery.
|
void |
send(Destination destination,
MessageCreator messageCreator)
Send a message to the specified destination.
|
void |
send(MessageCreator messageCreator)
Send a message to the default destination.
|
void |
send(String destinationName,
MessageCreator messageCreator)
Send a message to the specified destination.
|
Message |
sendAndReceive(Destination destination,
MessageCreator messageCreator)
Send a message and receive the reply from the specified destination.
|
Message |
sendAndReceive(MessageCreator messageCreator)
Send a request message and receive the reply from a default destination.
|
Message |
sendAndReceive(String destinationName,
MessageCreator messageCreator)
Send a message and receive the reply from the specified destination.
|
void |
setDefaultDestination(Destination destination)
Set the destination to be used on send/receive operations that do not
have a destination parameter.
|
void |
setDefaultDestinationName(String destinationName)
Set the destination name to be used on send/receive operations that
do not have a destination parameter.
|
void |
setDeliveryDelay(long deliveryDelay)
Set the delivery delay to use for send calls (in milliseconds).
|
void |
setDeliveryMode(int deliveryMode)
Set the delivery mode to use when sending a message.
|
void |
setDeliveryPersistent(boolean deliveryPersistent)
Set whether message delivery should be persistent or non-persistent,
specified as boolean value ("true" or "false").
|
void |
setExplicitQosEnabled(boolean explicitQosEnabled)
Set if the QOS values (deliveryMode, priority, timeToLive)
should be used for sending a message.
|
void |
setMessageConverter(MessageConverter messageConverter)
Set the message converter for this template.
|
void |
setMessageIdEnabled(boolean messageIdEnabled)
Set whether message IDs are enabled.
|
void |
setMessageTimestampEnabled(boolean messageTimestampEnabled)
Set whether message timestamps are enabled.
|
void |
setPriority(int priority)
Set the priority of a message when sending.
|
void |
setPubSubNoLocal(boolean pubSubNoLocal)
Set whether to inhibit the delivery of messages published by its own connection.
|
void |
setQosSettings(QosSettings settings)
Set the
QosSettings to use when sending a message. |
void |
setReceiveTimeout(long receiveTimeout)
Set the timeout to use for receive calls (in milliseconds).
|
void |
setTimeToLive(long timeToLive)
Set the time-to-live of the message when sending.
|
getDestinationResolver, isPubSubDomain, receiveFromConsumer, resolveDestinationName, setDestinationResolver, setPubSubDomain
afterPropertiesSet, convertJmsAccessException, createConnection, createSession, getConnectionFactory, getSessionAcknowledgeMode, isClientAcknowledge, isSessionTransacted, obtainConnectionFactory, setConnectionFactory, setSessionAcknowledgeMode, setSessionAcknowledgeModeName, setSessionTransacted
public JmsTemplate()
Note: The ConnectionFactory has to be set before using the instance. This constructor can be used to prepare a JmsTemplate via a BeanFactory, typically setting the ConnectionFactory via setConnectionFactory.
public JmsTemplate(ConnectionFactory connectionFactory)
connectionFactory
- the ConnectionFactory to obtain Connections fromprotected void initDefaultStrategies()
public void setDefaultDestination(@Nullable Destination destination)
Alternatively, specify a "defaultDestinationName", to be dynamically resolved via the DestinationResolver.
@Nullable public Destination getDefaultDestination()
public void setDefaultDestinationName(@Nullable String destinationName)
Alternatively, specify a JMS Destination object as "defaultDestination".
@Nullable public String getDefaultDestinationName()
public void setMessageConverter(@Nullable MessageConverter messageConverter)
The default converter is a SimpleMessageConverter, which is able to handle BytesMessages, TextMessages and ObjectMessages.
@Nullable public MessageConverter getMessageConverter()
public void setMessageIdEnabled(boolean messageIdEnabled)
This is only a hint to the JMS producer. See the JMS javadocs for details.
public boolean isMessageIdEnabled()
public void setMessageTimestampEnabled(boolean messageTimestampEnabled)
This is only a hint to the JMS producer. See the JMS javadocs for details.
public boolean isMessageTimestampEnabled()
public void setPubSubNoLocal(boolean pubSubNoLocal)
public boolean isPubSubNoLocal()
public void setReceiveTimeout(long receiveTimeout)
The default is JmsDestinationAccessor.RECEIVE_TIMEOUT_INDEFINITE_WAIT
, which indicates
a blocking receive without timeout.
Specify JmsDestinationAccessor.RECEIVE_TIMEOUT_NO_WAIT
(or any other negative value)
to indicate that a receive operation should check if a message is
immediately available without blocking.
public long getReceiveTimeout()
public void setDeliveryDelay(long deliveryDelay)
The default is -1 (no delivery delay passed on to the broker). Note that this feature requires JMS 2.0.
public long getDeliveryDelay()
public void setExplicitQosEnabled(boolean explicitQosEnabled)
setDeliveryMode(int)
,
setPriority(int)
,
setTimeToLive(long)
public boolean isExplicitQosEnabled()
setDeliveryMode(int)
,
setPriority(int)
,
setTimeToLive(long)
public void setQosSettings(QosSettings settings)
QosSettings
to use when sending a message.settings
- the deliveryMode, priority, and timeToLive settings to usesetExplicitQosEnabled(boolean)
,
setDeliveryMode(int)
,
setPriority(int)
,
setTimeToLive(long)
public void setDeliveryPersistent(boolean deliveryPersistent)
Default is "true" a.k.a. delivery mode "PERSISTENT".
public void setDeliveryMode(int deliveryMode)
Since a default value may be defined administratively, this is only used when "isExplicitQosEnabled" equals "true".
deliveryMode
- the delivery mode to useisExplicitQosEnabled()
,
DeliveryMode.PERSISTENT
,
DeliveryMode.NON_PERSISTENT
,
Message.DEFAULT_DELIVERY_MODE
,
MessageProducer.send(javax.jms.Message, int, int, long)
public int getDeliveryMode()
public void setPriority(int priority)
Since a default value may be defined administratively, this is only used when "isExplicitQosEnabled" equals "true".
public int getPriority()
public void setTimeToLive(long timeToLive)
Since a default value may be defined administratively, this is only used when "isExplicitQosEnabled" equals "true".
timeToLive
- the message's lifetime (in milliseconds)isExplicitQosEnabled()
,
Message.DEFAULT_TIME_TO_LIVE
,
MessageProducer.send(javax.jms.Message, int, int, long)
public long getTimeToLive()
@Nullable public <T> T execute(SessionCallback<T> action) throws JmsException
JmsOperations
execute
in interface JmsOperations
action
- callback object that exposes the sessionJmsException
- if there is any problem@Nullable public <T> T execute(SessionCallback<T> action, boolean startConnection) throws JmsException
execute(SessionCallback)
,
allowing the JMS Connection to be started on the fly.
Use execute(SessionCallback)
for the general case.
Starting the JMS Connection is just necessary for receiving messages,
which is preferably achieved through the receive
methods.
action
- callback object that exposes the SessionstartConnection
- whether to start the ConnectionJmsException
- if there is any problemexecute(SessionCallback)
,
receive()
@Nullable public <T> T execute(ProducerCallback<T> action) throws JmsException
JmsOperations
execute
in interface JmsOperations
action
- callback object that exposes the session/producer pairJmsException
- checked JMSException converted to unchecked@Nullable public <T> T execute(@Nullable Destination destination, ProducerCallback<T> action) throws JmsException
JmsOperations
execute
in interface JmsOperations
destination
- the destination to send messages toaction
- callback object that exposes the session/producer pairJmsException
- checked JMSException converted to unchecked@Nullable public <T> T execute(String destinationName, ProducerCallback<T> action) throws JmsException
JmsOperations
execute
in interface JmsOperations
destinationName
- the name of the destination to send messages to
(to be resolved to an actual destination by a DestinationResolver)action
- callback object that exposes the session/producer pairJmsException
- checked JMSException converted to uncheckedpublic void send(MessageCreator messageCreator) throws JmsException
JmsOperations
This will only work with a default destination specified!
send
in interface JmsOperations
messageCreator
- callback to create a messageJmsException
- checked JMSException converted to uncheckedpublic void send(Destination destination, MessageCreator messageCreator) throws JmsException
JmsOperations
send
in interface JmsOperations
destination
- the destination to send this message tomessageCreator
- callback to create a messageJmsException
- checked JMSException converted to uncheckedpublic void send(String destinationName, MessageCreator messageCreator) throws JmsException
JmsOperations
send
in interface JmsOperations
destinationName
- the name of the destination to send this message to
(to be resolved to an actual destination by a DestinationResolver)messageCreator
- callback to create a messageJmsException
- checked JMSException converted to uncheckedprotected void doSend(Session session, Destination destination, MessageCreator messageCreator) throws JMSException
session
- the JMS Session to operate ondestination
- the JMS Destination to send tomessageCreator
- callback to create a JMS MessageJMSException
- if thrown by JMS API methodsprotected void doSend(MessageProducer producer, Message message) throws JMSException
producer
- the JMS MessageProducer to send withmessage
- the JMS Message to sendJMSException
- if thrown by JMS API methodspublic void convertAndSend(Object message) throws JmsException
JmsOperations
This will only work with a default destination specified!
convertAndSend
in interface JmsOperations
message
- the object to convert to a messageJmsException
- converted checked JMSException to uncheckedpublic void convertAndSend(Destination destination, Object message) throws JmsException
JmsOperations
convertAndSend
in interface JmsOperations
destination
- the destination to send this message tomessage
- the object to convert to a messageJmsException
- converted checked JMSException to uncheckedpublic void convertAndSend(String destinationName, Object message) throws JmsException
JmsOperations
convertAndSend
in interface JmsOperations
destinationName
- the name of the destination to send this message to
(to be resolved to an actual destination by a DestinationResolver)message
- the object to convert to a messageJmsException
- checked JMSException converted to uncheckedpublic void convertAndSend(Object message, MessagePostProcessor postProcessor) throws JmsException
JmsOperations
This will only work with a default destination specified!
convertAndSend
in interface JmsOperations
message
- the object to convert to a messagepostProcessor
- the callback to modify the messageJmsException
- checked JMSException converted to uncheckedpublic void convertAndSend(Destination destination, Object message, MessagePostProcessor postProcessor) throws JmsException
JmsOperations
convertAndSend
in interface JmsOperations
destination
- the destination to send this message tomessage
- the object to convert to a messagepostProcessor
- the callback to modify the messageJmsException
- checked JMSException converted to uncheckedpublic void convertAndSend(String destinationName, Object message, MessagePostProcessor postProcessor) throws JmsException
JmsOperations
convertAndSend
in interface JmsOperations
destinationName
- the name of the destination to send this message to
(to be resolved to an actual destination by a DestinationResolver)message
- the object to convert to a message.postProcessor
- the callback to modify the messageJmsException
- checked JMSException converted to unchecked@Nullable public Message receive() throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
This will only work with a default destination specified!
receive
in interface JmsOperations
null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Message receive(Destination destination) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
receive
in interface JmsOperations
destination
- the destination to receive a message fromnull
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Message receive(String destinationName) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
receive
in interface JmsOperations
destinationName
- the name of the destination to send this message to
(to be resolved to an actual destination by a DestinationResolver)null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Message receiveSelected(String messageSelector) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
This will only work with a default destination specified!
receiveSelected
in interface JmsOperations
messageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Message receiveSelected(Destination destination, @Nullable String messageSelector) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
receiveSelected
in interface JmsOperations
destination
- the destination to receive a message frommessageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Message receiveSelected(String destinationName, @Nullable String messageSelector) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
receiveSelected
in interface JmsOperations
destinationName
- the name of the destination to send this message to
(to be resolved to an actual destination by a DestinationResolver)messageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable protected Message doReceive(Session session, Destination destination, @Nullable String messageSelector) throws JMSException
session
- the JMS Session to operate ondestination
- the JMS Destination to receive frommessageSelector
- the message selector for this consumer (can be null
)null
if noneJMSException
- if thrown by JMS API methods@Nullable protected Message doReceive(Session session, MessageConsumer consumer) throws JMSException
session
- the JMS Session to operate onconsumer
- the JMS MessageConsumer to receive withnull
if noneJMSException
- if thrown by JMS API methods@Nullable public Object receiveAndConvert() throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
This will only work with a default destination specified!
receiveAndConvert
in interface JmsOperations
null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Object receiveAndConvert(Destination destination) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
receiveAndConvert
in interface JmsOperations
destination
- the destination to receive a message fromnull
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Object receiveAndConvert(String destinationName) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
receiveAndConvert
in interface JmsOperations
destinationName
- the name of the destination to send this message to
(to be resolved to an actual destination by a DestinationResolver)null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Object receiveSelectedAndConvert(String messageSelector) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
This will only work with a default destination specified!
receiveSelectedAndConvert
in interface JmsOperations
messageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Object receiveSelectedAndConvert(Destination destination, String messageSelector) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
receiveSelectedAndConvert
in interface JmsOperations
destination
- the destination to receive a message frommessageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable public Object receiveSelectedAndConvert(String destinationName, String messageSelector) throws JmsException
JmsOperations
This method should be used carefully, since it will block the thread until the message becomes available or until the timeout value is exceeded.
receiveSelectedAndConvert
in interface JmsOperations
destinationName
- the name of the destination to send this message to
(to be resolved to an actual destination by a DestinationResolver)messageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.null
if the timeout expiresJmsException
- checked JMSException converted to unchecked@Nullable protected Object doConvertFromMessage(@Nullable Message message)
message
- the JMS Message to convert (can be null
)null
if none@Nullable public Message sendAndReceive(MessageCreator messageCreator) throws JmsException
JmsOperations
MessageCreator
callback creates the message given a Session. A temporary
queue is created as part of this operation and is set in the JMSReplyTO
header of the message.
This will only work with a default destination specified!
sendAndReceive
in interface JmsOperations
messageCreator
- callback to create a request messagenull
if the message could not be received,
for example due to a timeoutJmsException
- checked JMSException converted to unchecked@Nullable public Message sendAndReceive(Destination destination, MessageCreator messageCreator) throws JmsException
JmsOperations
MessageCreator
callback creates the message given a Session. A temporary
queue is created as part of this operation and is set in the JMSReplyTO
header of the message.sendAndReceive
in interface JmsOperations
destination
- the destination to send this message tomessageCreator
- callback to create a messagenull
if the message could not be received,
for example due to a timeoutJmsException
- checked JMSException converted to unchecked@Nullable public Message sendAndReceive(String destinationName, MessageCreator messageCreator) throws JmsException
JmsOperations
MessageCreator
callback creates the message given a Session. A temporary
queue is created as part of this operation and is set in the JMSReplyTO
header of the message.sendAndReceive
in interface JmsOperations
destinationName
- the name of the destination to send this message to
(to be resolved to an actual destination by a DestinationResolver)messageCreator
- callback to create a messagenull
if the message could not be received,
for example due to a timeoutJmsException
- checked JMSException converted to unchecked@Nullable protected Message doSendAndReceive(Session session, Destination destination, MessageCreator messageCreator) throws JMSException
Destination
and block until
a reply has been received on a temporary queue created on-the-fly.
Return the response message or null
if no message has
JMSException
- if thrown by JMS API methods@Nullable public <T> T browse(BrowserCallback<T> action) throws JmsException
JmsOperations
browse
in interface JmsOperations
action
- callback object that exposes the session/browser pairJmsException
- checked JMSException converted to unchecked@Nullable public <T> T browse(Queue queue, BrowserCallback<T> action) throws JmsException
JmsOperations
browse
in interface JmsOperations
queue
- the queue to browseaction
- callback object that exposes the session/browser pairJmsException
- checked JMSException converted to unchecked@Nullable public <T> T browse(String queueName, BrowserCallback<T> action) throws JmsException
JmsOperations
browse
in interface JmsOperations
queueName
- the name of the queue to browse
(to be resolved to an actual destination by a DestinationResolver)action
- callback object that exposes the session/browser pairJmsException
- checked JMSException converted to unchecked@Nullable public <T> T browseSelected(String messageSelector, BrowserCallback<T> action) throws JmsException
JmsOperations
browseSelected
in interface JmsOperations
messageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.action
- callback object that exposes the session/browser pairJmsException
- checked JMSException converted to unchecked@Nullable public <T> T browseSelected(Queue queue, @Nullable String messageSelector, BrowserCallback<T> action) throws JmsException
JmsOperations
browseSelected
in interface JmsOperations
queue
- the queue to browsemessageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.action
- callback object that exposes the session/browser pairJmsException
- checked JMSException converted to unchecked@Nullable public <T> T browseSelected(String queueName, @Nullable String messageSelector, BrowserCallback<T> action) throws JmsException
JmsOperations
browseSelected
in interface JmsOperations
queueName
- the name of the queue to browse
(to be resolved to an actual destination by a DestinationResolver)messageSelector
- the JMS message selector expression (or null
if none).
See the JMS specification for a detailed definition of selector expressions.action
- callback object that exposes the session/browser pairJmsException
- checked JMSException converted to unchecked@Nullable protected Connection getConnection(JmsResourceHolder holder)
This implementation accepts any JMS 1.1 Connection.
holder
- the JmsResourceHoldernull
if none found@Nullable protected Session getSession(JmsResourceHolder holder)
This implementation accepts any JMS 1.1 Session.
holder
- the JmsResourceHoldernull
if none foundprotected boolean isSessionLocallyTransacted(Session session)
Note: The Session's own transacted flag will already have been checked before. This method is about finding out whether the Session's transaction is local or externally coordinated.
session
- the Session to checkJmsAccessor.isSessionTransacted()
,
ConnectionFactoryUtils.isSessionTransactional(javax.jms.Session, javax.jms.ConnectionFactory)
protected MessageProducer createProducer(Session session, @Nullable Destination destination) throws JMSException
Delegates to doCreateProducer(javax.jms.Session, javax.jms.Destination)
for creation of the raw
JMS MessageProducer.
session
- the JMS Session to create a MessageProducer fordestination
- the JMS Destination to create a MessageProducer forJMSException
- if thrown by JMS API methodssetMessageIdEnabled(boolean)
,
setMessageTimestampEnabled(boolean)
protected MessageProducer doCreateProducer(Session session, @Nullable Destination destination) throws JMSException
This implementation uses JMS 1.1 API.
session
- the JMS Session to create a MessageProducer fordestination
- the JMS Destination to create a MessageProducer forJMSException
- if thrown by JMS API methodsprotected MessageConsumer createConsumer(Session session, Destination destination, @Nullable String messageSelector) throws JMSException
This implementation uses JMS 1.1 API.
session
- the JMS Session to create a MessageConsumer fordestination
- the JMS Destination to create a MessageConsumer formessageSelector
- the message selector for this consumer (can be null
)JMSException
- if thrown by JMS API methodsprotected QueueBrowser createBrowser(Session session, Queue queue, @Nullable String messageSelector) throws JMSException
Delegates to doCreateProducer(javax.jms.Session, javax.jms.Destination)
for creation of the raw
JMS MessageProducer.
session
- the JMS Session to create a QueueBrowser forqueue
- the JMS Queue to create a QueueBrowser formessageSelector
- the message selector for this consumer (can be null
)JMSException
- if thrown by JMS API methodssetMessageIdEnabled(boolean)
,
setMessageTimestampEnabled(boolean)