Uploaded image for project: 'Qpid JMS'
  1. Qpid JMS
  2. QPIDJMS-121

add ability to send different AMQP dispositions when using client-acknowledge mode

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.6.0
    • 0.7.0
    • qpid-jms-client
    • 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.

      Attachments

        Activity

          People

            robbie Robbie Gemmell
            andrew-buckley Andrew Buckley
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: