Expired Messages appear through policy entry on the DLQ and are also processed
from the main Queue
--------------------------------------------------------------------------------------------------
Key: AMQ-2373
URL: https://issues.apache.org/activemq/browse/AMQ-2373
Project: ActiveMQ
Issue Type: Bug
Affects Versions: 5.2.0
Reporter: Andrew Maharaj
Hi,
We have a policy entry like this:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">"
memoryLimit="10mb">
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ."
useQueueForQueueMessages="true" />
</deadLetterStrategy>
</policyEntry>
<policyEntry topic=">"
memoryLimit="10mb">
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
Messages sent with an expiry time of 10 seconds appear on the Dead Letter Queue.
However, if a Message Driven Bean ultimately picks up the message from the main
queue in a transaction and the transaction is slow, the message can expire
while the transaction is in progress.
This leads to a situation where the message is processed twice, implying that
the queue processing is not atomic.
- The main MDB completes processing,
- The expired message is moved to the DLQ
- The MDB listening to the Dead Letter Queue also
processes a response.
Utlimately, responses for the expired message and for the in flight message are
both generated. Neither operation reports any exceptions.
The MDB's are simple, vanilla MDB's using Apache Geronimo 2.1.4 and referring
to a separate ActiveMQ 5.2 installation (not the 4.1 shipped with Geronimo).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.