Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.6.0
-
None
Description
Add the ability to set the AMQP disposition type used when when acknowledging messages while using client-acknowledge mode.
The particular disposition to be applied will be set using the message object that the acknowledge method is called on, using a vendor property selected by the AMQP BINDMAP TC. As with the defined JMS behaviour in CLIENT_ACKNOWLEDGE mode, all messages on the session seen by the application and not yet acknowledged will have the disposition applied to them.
An example usage is described below in the following comment:
https://issues.apache.org/jira/browse/QPIDJMS-121?focusedCommentId=14967894&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14967894
This is an updated approach following discussion of the original proposal detailed below.
Original Description:
description from GitHub README. README and code changes located here: https://github.com/andrew-buckley/qpid-jms/
QpidJMS with AMQP-style acknowledgements
This is a fork of the QpidJMS project that adds the ability to acknowledge
messages in three ways: CONSUMED, POISONED, and RELEASED.
The fork is based on QpidJMS version 0.4.0-SNAPSHOT but has been merged with the current unreleased 0.6.0. The fork is
fully compatible with JMS 1.1 but provides an additional interface, JmsAmqpMessage
(found in org.apache.qpid.jms), that features this new functionality.
Any messages consumed using this provider can be safely cast to type JmsAmpqMessage.
Additions
- org.apache.qpid.jms.message.JmsAmqpMessage
- org.apache.qpid.jms.message.JmsAcknowledgeCallback
Changes
- Added method acknowledge(ProviderConstants.ACK_TYPE ackType) to org.apache.qpid.jms.message.JmsMessage.
- Changed acknowledgeCallback type in org.apache.qpid.jms.message.JmsMessage to type JmsAcknowledgeCallback.
- Changed method onInboundMessage in org.apache.qpid.jms.JmsMessageConsumer to set a message callback
that takes an ACK_TYPE as an argument. - Changed method acknowledge() in org.apache.qpid.jms.JmsSession to take an ACK_TYPE as an argument.
- Changed method acknowledge(JmsSessionId sessionId) in org.apache.qpid.jms.JmsConnection to take an ACK_TYPE
as an argument. - Changed method acknowledge(final JmsSessionId sessionId, final AsyncResult request) in
org.apache.qpid.jms.provider.amqp.AmqpProvider to take an ACK_TYPE as an argument. - Changed method acknowledge() in org.apache.qpid.jms.provider.amqp.AmqpSession to take an ACK_TYPE
as an argument. - Changed method acknowledge() in org.apache.qpid.jms.provider.amqp.AmqpConsumer to take an ACK_TYPE
as an argument. The method maps acknowledgement types to AMQP dispositions as follows:
CONSUMED to ACCEPTED, POISONED to REJECTED, RELEASED to RELEASED.