Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
qpid-java-broker-7.1.7
-
None
-
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.