activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From thabach <>
Subject Reconciliation after ActiveMQ server crash.
Date Fri, 28 Nov 2008 13:09:06 GMT

Hey everyone

I have a conceptual question regarding reconciliation after a JMS server
crash. According to the JMS specification (paragraph 4.4.13, see below)
there is room for some ambiguity leaving a producer in doubt if a message
successfully made it to the server or not in case of server failure. 

The [X] part is what disquiets me: "It is up to a JMS application to deal
with this ambiguity."

A producer in doubt can only resend the original message. In what way does
ActiveMQ support me in doing so ? Are there any means of having ActiveMQ
sort out potential duplicates sent by the application layers after server
recovery and publisher reconnect ? Or do downstream consumers have to cope
with these kind of duplicate messages somehow ?

Regards and thanks for any insights, Christian.

== JMS spec excerpt ============================================

4.4.13 Duplicate Production of Messages
JMS providers must never produce duplicate messages. This means that a
client that produces a message can rely on its JMS provider to insure that
consumers of the message will receive it only once. No client error can
cause a
provider to duplicate a message.
If a failure occurs between the time a client commits its work on a Session
the commit method returns, the client cannot determine if the transaction
committed or rolled back. The same ambiguity exists when a failure occurs
between the non-transactional send of a PERSISTENT message and the return
from the sending method.
[X] It is up to a JMS application to deal with this ambiguity. In some
cases, this
may cause a client to produce functionally duplicate messages.
A message that is redelivered due to session recovery is not considered a
duplicate message.

View this message in context:
Sent from the ActiveMQ - User mailing list archive at

View raw message