public class UserDestinationMessageHandler extends java.lang.Object implements MessageHandler
The target destination has the prefix removed and a unique queue suffix,
resolved via #setUserQueueSuffixResolver(UserQueueSuffixResolver)
, appended.
For example a destination such as "/user/john/queue/trade-confirmation" could
be transformed to "/queue/trade-confirmation/i9oqdfzo".
Modifier and Type | Class and Description |
---|---|
private class |
UserDestinationMessageHandler.UserDestinationParser |
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
destinationPrefix |
private static Log |
logger |
private MessageSendingOperations<java.lang.String> |
messagingTemplate |
private UserQueueSuffixResolver |
userQueueSuffixResolver |
Constructor and Description |
---|
UserDestinationMessageHandler(MessageSendingOperations<java.lang.String> messagingTemplate,
UserQueueSuffixResolver userQueueSuffixResolver) |
Modifier and Type | Method and Description |
---|---|
private boolean |
checkDestination(java.lang.String destination) |
java.lang.String |
getDestinationPrefix() |
MessageSendingOperations<java.lang.String> |
getMessagingTemplate() |
UserQueueSuffixResolver |
getUserQueueSuffixResolver() |
void |
handleMessage(Message<?> message)
Handles the message if possible.
|
void |
setDestinationPrefix(java.lang.String prefix)
The default prefix is "/user".
|
private static final Log logger
private final MessageSendingOperations<java.lang.String> messagingTemplate
private java.lang.String destinationPrefix
private UserQueueSuffixResolver userQueueSuffixResolver
public UserDestinationMessageHandler(MessageSendingOperations<java.lang.String> messagingTemplate, UserQueueSuffixResolver userQueueSuffixResolver)
messagingTemplate
- resolver
- the resolver to use to find queue suffixes for a userpublic void setDestinationPrefix(java.lang.String prefix)
The default prefix is "/user".
prefix
- the prefix to setpublic java.lang.String getDestinationPrefix()
public UserQueueSuffixResolver getUserQueueSuffixResolver()
public MessageSendingOperations<java.lang.String> getMessagingTemplate()
public void handleMessage(Message<?> message) throws MessagingException
MessageHandler
MessageRejectedException
e.g.
in case of a Selective Consumer. When a consumer tries to handle a
message, but fails to do so, a MessageHandlingException
is
thrown. In the last case it is recommended to treat the message as tainted
and go into an error scenario.
When the handling results in a failure of another message being sent
(e.g. a "reply" message), that failure will trigger a
MessageDeliveryException
.
handleMessage
in interface MessageHandler
message
- the message to be handled
reply related to the handling of the messageMessagingException
private boolean checkDestination(java.lang.String destination)