Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-8405

Per-message expiration is treated wrong for AMQP 0-9-1

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • qpid-java-broker-7.1.7
    • None
    • Broker-J
    • None

    Description

      We are using QPid with AMQP 0-9-1 support as an embedded alternative to RabbitMQ. RabbitMQ has extended the 0-9-1 specification with per-message TTLs. The documentation states that the value of the expiration header is the time-to-live in milliseconds. However, when we set an expiration of 60,000 when sending a message to QPid this message gets discarded immediately and is not delivered to any consumer. I had a look at the code and the bug is obvious: instead of treating the expiration header as a TTL it is treated as an absolute expiration timestamp, see org.apache.qpid.server.queue.QueueEntryImpl.expired(). Either QPid shouldn't support expiration at all for AMPQ 0-9-1 since it's not part of the standard or it should follow the RabbitMQ implementation since I assume it was introduced by them.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            sithmein Thorsten Meinl

            Dates

              Created:
              Updated:

              Slack

                Issue deployment