Correlating Messages
Asynchronous messaging means that the sender doesn’t receive an immediate reply or confirmation of receipt. After sending a message for processing by a remote service, most applications require at least confirmation that the message was received and acted upon, and often require the results of the remote process. Remember—in a normal application, even if a method doesn’t return a value, the system at least knows that the method has had a chance to execute.
A reply message is a message received in response to another message. Reply messages are generally document or event messages, but are distinguished by being associated with a particular message. Typically, this association is accomplished by assigning each outgoing message a unique identifier (MOM systems do this automatically). If an incoming message is a reply, it includes a reference to the message the remote application is replying to.
JMS includes built-in functionality for associating a reply message
with the original. Each
JMS
message, upon creation, is assigned a message ID, which is accessible
via the JMSMessageID
property of the
Message
class. Messages also have a
JMSCorrelationID
field, not set by default. When
composing a reply message, it’s standard practice to
take the JMSMessageID
and store it in the
JMSCorrelationID
field. Assuming that
message
and reply
are valid JMS
messages, and that reply
is a response to
message
, this is how we’d set the
correlation:
reply.setJMSCorrelationID(message.getJMSMessageID( ...
Get J2EE Design Patterns now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.