public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageListener
javax.jms.MessageListener
adapter that invokes a configurable
InvocableHandlerMethod
.
Wraps the incoming javax.jms.Message
to Spring's Message
abstraction, copying the JMS standard headers using a configurable
JmsHeaderMapper
.
The original javax.jms.Message
and the javax.jms.Session
are provided as additional arguments so that these can be injected as
method arguments if necessary.
Message
,
JmsHeaderMapper
,
InvocableHandlerMethod
Modifier and Type | Field and Description |
---|---|
private InvocableHandlerMethod |
handlerMethod |
logger
Constructor and Description |
---|
MessagingMessageListenerAdapter() |
Modifier and Type | Method and Description |
---|---|
private java.lang.String |
createMessagingErrorMessage(java.lang.String description) |
private InvocableHandlerMethod |
getHandlerMethod() |
private java.lang.Object |
invokeHandler(javax.jms.Message jmsMessage,
Session session,
Message<?> message)
Invoke the handler, wrapping any exception to a
ListenerExecutionFailedException
with a dedicated error message. |
void |
onMessage(javax.jms.Message jmsMessage,
Session session)
Callback for processing a received JMS message.
|
protected java.lang.Object |
preProcessResponse(java.lang.Object result)
Pre-process the given result before it is converted to a
Message . |
void |
setHandlerMethod(InvocableHandlerMethod handlerMethod)
Set the
InvocableHandlerMethod to use to invoke the method
processing an incoming javax.jms.Message . |
protected Message<?> |
toMessagingMessage(javax.jms.Message jmsMessage) |
buildMessage, extractMessage, getDestinationResolver, getMessageConverter, getMessagingMessageConverter, getResponseDestination, getResponseQosSettings, handleListenerException, handleResult, onMessage, postProcessProducer, postProcessResponse, resolveDefaultResponseDestination, sendResponse, setDefaultResponseDestination, setDefaultResponseQueueName, setDefaultResponseTopicName, setDestinationResolver, setHeaderMapper, setMessageConverter, setResponseQosSettings
@Nullable private InvocableHandlerMethod handlerMethod
public void setHandlerMethod(InvocableHandlerMethod handlerMethod)
InvocableHandlerMethod
to use to invoke the method
processing an incoming javax.jms.Message
.private InvocableHandlerMethod getHandlerMethod()
public void onMessage(javax.jms.Message jmsMessage, @Nullable Session session) throws JMSException
SessionAwareMessageListener
Implementors are supposed to process the given Message, typically sending reply messages through the given Session.
onMessage
in interface SessionAwareMessageListener<Message>
onMessage
in class AbstractAdaptableMessageListener
jmsMessage
- the received JMS message (never null
)session
- the underlying JMS Session (never null
)JMSException
- if thrown by JMS methodsprotected java.lang.Object preProcessResponse(java.lang.Object result)
AbstractAdaptableMessageListener
Message
.preProcessResponse
in class AbstractAdaptableMessageListener
result
- the result of the invocationresult
argument
or any other object (for instance wrapping the result).protected Message<?> toMessagingMessage(javax.jms.Message jmsMessage)
@Nullable private java.lang.Object invokeHandler(javax.jms.Message jmsMessage, @Nullable Session session, Message<?> message)
ListenerExecutionFailedException
with a dedicated error message.private java.lang.String createMessagingErrorMessage(java.lang.String description)