Class ChannelPublishingJmsMessageListener
java.lang.Object
org.springframework.integration.jms.ChannelPublishingJmsMessageListener
- All Implemented Interfaces:
Aware
,BeanFactoryAware
,InitializingBean
,NamedComponent
,TrackableComponent
,SessionAwareMessageListener<Message>
public class ChannelPublishingJmsMessageListener
extends Object
implements SessionAwareMessageListener<Message>, InitializingBean, TrackableComponent, BeanFactoryAware
JMS MessageListener that converts a JMS Message into a Spring Integration
Message and sends that Message to a channel. If the 'expectReply' value is
true
, it will also wait for a Spring Integration reply Message
and convert that into a JMS reply.- Author:
- Mark Fisher, Juergen Hoeller, Oleg Zhurakousky, Artem Bilan, Gary Russell, Ngoc Nhan
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
void
void
setBeanFactory
(BeanFactory beanFactory) void
setComponentName
(String componentName) void
setCorrelationKey
(String correlationKey) Provide the name of a JMS property that should be copied from the request Message to the reply Message.void
setDefaultReplyDestination
(Destination defaultReplyDestination) Set the default reply destination to send reply messages to.void
setDefaultReplyQueueName
(String destinationName) Set the name of the default reply queue to send reply messages to.void
setDefaultReplyTopicName
(String destinationName) Set the name of the default reply topic to send reply messages to.void
setDestinationResolver
(DestinationResolver destinationResolver) Set the DestinationResolver that should be used to resolve reply destination names for this listener.void
setErrorChannel
(MessageChannel errorChannel) void
setErrorChannelName
(String errorChannelName) void
setErrorOnTimeout
(boolean errorOnTimeout) void
setExpectReply
(boolean expectReply) Specify whether a JMS reply Message is expected.void
setExplicitQosEnabledForReplies
(boolean explicitQosEnabledForReplies) Specify whether explicit QoS should be enabled for replies (for timeToLive, priority, and deliveryMode settings).void
setExtractReplyPayload
(boolean extractReplyPayload) Specify whether the Spring Integration reply Message's payload should be extracted prior to converting into a JMS Message.void
setExtractRequestPayload
(boolean extractRequestPayload) Specify whether the JMS request Message's body should be extracted prior to converting into a Spring Integration Message.void
setHeaderMapper
(JmsHeaderMapper headerMapper) Provide aJmsHeaderMapper
implementation to use when converting between JMS Messages and Spring Integration Messages.void
setMessageConverter
(MessageConverter messageConverter) Provide aMessageConverter
implementation to use when converting between JMS Messages and Spring Integration Messages.void
setMetricsCaptor
(MetricsCaptor captor) void
setObservationRegistry
(io.micrometer.observation.ObservationRegistry observationRegistry) void
setReceiverObservationConvention
(MessageReceiverObservationConvention observationConvention) void
setRecoveryCallback
(org.springframework.retry.RecoveryCallback<Message<?>> recoveryCallback) Set aRecoveryCallback
when using retry within the adapter.void
setReplyChannel
(MessageChannel replyChannel) void
setReplyChannelName
(String replyChannelName) void
setReplyDeliveryPersistent
(boolean replyDeliveryPersistent) Specify the delivery mode for JMS reply Messages.void
setReplyPriority
(int replyPriority) Specify the priority value for JMS reply Messages.void
setReplyTimeout
(long replyTimeout) void
setReplyTimeToLive
(long replyTimeToLive) Specify the time-to-live property for JMS reply Messages.void
setReplyToExpression
(Expression replyToExpression) Set a SpEL expression to resolve a 'replyTo' destination from a requestMessage
as a root evaluation object ifMessage.getJMSReplyTo()
is null.void
setRequestChannel
(MessageChannel requestChannel) void
setRequestChannelName
(String requestChannelName) void
setRequestReplyObservationConvention
(MessageRequestReplyReceiverObservationConvention observationConvention) void
setRequestTimeout
(long requestTimeout) void
setRetryTemplate
(org.springframework.retry.support.RetryTemplate retryTemplate) Set aRetryTemplate
to use for retrying a message delivery within the adapter.void
setShouldTrack
(boolean shouldTrack) protected void
start()
protected void
stop()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.integration.support.context.NamedComponent
getBeanName
-
Field Details
-
logger
-
-
Constructor Details
-
ChannelPublishingJmsMessageListener
public ChannelPublishingJmsMessageListener()
-
-
Method Details
-
setExpectReply
public void setExpectReply(boolean expectReply) Specify whether a JMS reply Message is expected.- Parameters:
expectReply
- true if a reply is expected.
-
setComponentName
-
setRequestChannel
-
setRequestChannelName
-
setReplyChannel
-
setReplyChannelName
-
setErrorChannel
-
setErrorChannelName
-
setRequestTimeout
public void setRequestTimeout(long requestTimeout) -
setReplyTimeout
public void setReplyTimeout(long replyTimeout) -
setErrorOnTimeout
public void setErrorOnTimeout(boolean errorOnTimeout) -
setShouldTrack
public void setShouldTrack(boolean shouldTrack) - Specified by:
setShouldTrack
in interfaceTrackableComponent
-
getComponentName
- Specified by:
getComponentName
in interfaceNamedComponent
-
getComponentType
- Specified by:
getComponentType
in interfaceNamedComponent
-
setDefaultReplyDestination
Set the default reply destination to send reply messages to. This will be applied in case of a request message that does not carry a "JMSReplyTo" field.- Parameters:
defaultReplyDestination
- The default reply destination.
-
setDefaultReplyQueueName
Set the name of the default reply queue to send reply messages to. This will be applied in case of a request message that does not carry a "JMSReplyTo" field.Alternatively, specify a JMS Destination object as "defaultReplyDestination".
- Parameters:
destinationName
- The default reply destination name.- See Also:
-
setDefaultReplyTopicName
Set the name of the default reply topic to send reply messages to. This will be applied in case of a request message that does not carry a "JMSReplyTo" field.Alternatively, specify a JMS Destination object as "defaultReplyDestination".
- Parameters:
destinationName
- The default reply topic name.- See Also:
-
setReplyTimeToLive
public void setReplyTimeToLive(long replyTimeToLive) Specify the time-to-live property for JMS reply Messages.- Parameters:
replyTimeToLive
- The reply time to live.- See Also:
-
setReplyPriority
public void setReplyPriority(int replyPriority) Specify the priority value for JMS reply Messages.- Parameters:
replyPriority
- The reply priority.- See Also:
-
setReplyDeliveryPersistent
public void setReplyDeliveryPersistent(boolean replyDeliveryPersistent) Specify the delivery mode for JMS reply Messages.- Parameters:
replyDeliveryPersistent
- true for a persistent reply message.- See Also:
-
setCorrelationKey
Provide the name of a JMS property that should be copied from the request Message to the reply Message. If this value is NULL (the default) then the JMSMessageID from the request will be copied into the JMSCorrelationID of the reply unless there is already a value in the JMSCorrelationID property of the newly created reply Message in which case nothing will be copied. If the JMSCorrelationID of the request Message should be copied into the JMSCorrelationID of the reply Message instead, then this value should be set to "JMSCorrelationID". Any other value will be treated as a JMS String Property to be copied as-is from the request Message into the reply Message with the same property name.- Parameters:
correlationKey
- The correlation key.
-
setExplicitQosEnabledForReplies
public void setExplicitQosEnabledForReplies(boolean explicitQosEnabledForReplies) Specify whether explicit QoS should be enabled for replies (for timeToLive, priority, and deliveryMode settings).- Parameters:
explicitQosEnabledForReplies
- true to enable explicit QoS.
-
setDestinationResolver
Set the DestinationResolver that should be used to resolve reply destination names for this listener.The default resolver is a DynamicDestinationResolver. Specify a JndiDestinationResolver for resolving destination names as JNDI locations.
- Parameters:
destinationResolver
- The destination resolver.- See Also:
-
setReplyToExpression
Set a SpEL expression to resolve a 'replyTo' destination from a requestMessage
as a root evaluation object ifMessage.getJMSReplyTo()
is null.- Parameters:
replyToExpression
- the SpEL expression for 'replyTo' destination.- Since:
- 6.1
-
setMessageConverter
Provide aMessageConverter
implementation to use when converting between JMS Messages and Spring Integration Messages. If none is provided, aSimpleMessageConverter
will be used.- Parameters:
messageConverter
- The message converter.
-
setHeaderMapper
Provide aJmsHeaderMapper
implementation to use when converting between JMS Messages and Spring Integration Messages. If none is provided, aDefaultJmsHeaderMapper
will be used.- Parameters:
headerMapper
- The header mapper.
-
setExtractRequestPayload
public void setExtractRequestPayload(boolean extractRequestPayload) Specify whether the JMS request Message's body should be extracted prior to converting into a Spring Integration Message. This value is set totrue
by default. To send the JMS Message itself as a Spring Integration Message payload, set this tofalse
.- Parameters:
extractRequestPayload
- true if the request payload should be extracted.
-
setExtractReplyPayload
public void setExtractReplyPayload(boolean extractReplyPayload) Specify whether the Spring Integration reply Message's payload should be extracted prior to converting into a JMS Message. This value is set totrue
by default. To send the Spring Integration Message itself as the JMS Message's body, set this tofalse
.- Parameters:
extractReplyPayload
- true if the reply payload should be extracted.
-
setMetricsCaptor
-
setObservationRegistry
public void setObservationRegistry(io.micrometer.observation.ObservationRegistry observationRegistry) -
setRequestReplyObservationConvention
public void setRequestReplyObservationConvention(@Nullable MessageRequestReplyReceiverObservationConvention observationConvention) -
setReceiverObservationConvention
public void setReceiverObservationConvention(@Nullable MessageReceiverObservationConvention observationConvention) -
setRetryTemplate
public void setRetryTemplate(org.springframework.retry.support.RetryTemplate retryTemplate) Set aRetryTemplate
to use for retrying a message delivery within the adapter. Unlike adding retry at the container level, this can be used with anErrorMessageSendingRecoverer
RecoveryCallback
to publish to the error channel after retries are exhausted. You generally should not configure an error channel when using retry here, use aRecoveryCallback
instead.- Parameters:
retryTemplate
- the template.- Since:
- 6.3
- See Also:
-
setRecoveryCallback
public void setRecoveryCallback(org.springframework.retry.RecoveryCallback<Message<?>> recoveryCallback) Set aRecoveryCallback
when using retry within the adapter.- Parameters:
recoveryCallback
- the callback.- Since:
- 6.3
- See Also:
-
setBeanFactory
- Specified by:
setBeanFactory
in interfaceBeanFactoryAware
- Throws:
BeansException
-
onMessage
- Specified by:
onMessage
in interfaceSessionAwareMessageListener<Message>
- Throws:
JMSException
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSet
in interfaceInitializingBean
-
start
protected void start() -
stop
protected void stop()
-