Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Placeholder for Maximum Delivery Count/Dead-lettering support.
The current implementation in the Broker is incomplete. I notice the following areas. There may be more.
- The protocol layer needs to trigger the MessageInstance#routeToAlternate
- Handling of the Rejected outcome is absent. http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-rejected
- Implement handling of default outcomes.
- AMQP 1.0 Conversion layer should set Header#setDeliveryCount()
- I note that the AMQP 0-8..0-10 protocol layers use the MessageInstance#deliveryCount differently to the AMQP 1.0 protocol layer. This will need some care to ensure that protocol's play nicely together.
- AMQP 0-8..0-10 the delivery count is incremented before the consumer send and then it is reduced if the client returns the message indicating the message is unseen.
- AMQP 1.0 specification defines Header field delivery-count as "The number of unsuccessful previous attempts to deliver this message. If this value is non-zero it can be taken as an indication that the delivery might be a duplicate. On first delivery, the value is zero. It is incremented upon an outcome being settled at the sender, according to rules defined for each outcome.". Currently the AMQP protocol layer populates delivery-count with MessageInstance#deliveryCount and it only increments MessageInstance#deliveryCount after the message is rejected.
Also verify:
- Behaviour when the session is rolled back or the recovered.
- Behaviour when the session or connection is closed.
- Behaviour when the connection is abruptly dropped.
Attachments
Issue Links
- relates to
-
QPID-3951 [Java AMQP 1.0] The default outcome for sources on the broker should increment the delivery count
- Closed