Message Groups and Acknowledgment
When multiple messages need to be dealt with as a group, the
application needs to be able to store or cache interim messages until
the entire group has been delivered. This requirement typically means
that the asynchronous invocation of the onMessage()
handler would result in business logic
getting executed and data would be placed temporarily in a database
table in preparation for processing the group of messages as a whole.
When the last message of the group arrives, the application can then go
to the database to retrieve the data from the previous messages to
establish any context it may need.
Handling Redelivery of Messages in an Application
JMS provides strict rules that govern when the redelivered flag
is set. In AUTO_ACKNOWLEDGE
mode,
only the most recently consumed message is subject to ambiguous
redelivery. In other modes, multiple messages may have the redelivered
flag set. It is up to the application designer to isolate the
conditions under which ambiguity can occur and to account for it in
the application. To illustrate the use of the CLIENT_ACKNOWLEDGE
mode and redelivered
flag, we will use a simple example where multiple messages are sent as
a group to the receiver.
Whenever a message is redelivered to a message consumer, the
JMSRedelivered
message header
property will be set to true
on the message. This is an indication to the message consumer that the message has been partially processed but an exception occurred preventing that message ...
Get Java Message Service, 2nd Edition 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.