[
https://issues.apache.org/jira/browse/QPID-8405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17023014#comment-17023014
]
Robert Godfrey commented on QPID-8405:
--------------------------------------
For AMQP 0-9-1 the "expiration" field in Basic.ContentHeaderProperties didn't
have any semantics specified. The definition literally is:
{{1.8.2.8. Property basic.expiration (shortstr)}}
{{Domain: shortstr}}
{{ Label: message expiration specification}}
It is, however, specifically labelled as "expiration" rather than ttl.
I'm pretty sure that the Qpid implementation actually pre-dates the RabbitMQ
one (I think this was first implemented in Qpid in the 2006/2007 timeframe -
but the code has changed and moved around so much since then it would take a
while to track it down) but I don't think it is appropriate to say either one
is right or wrong, nor that one should change.
One thing that could potentially be done on the Qpid side is to add some sort
of property in the client-properties sent by the client in Connection.start-ok
to request that Qpid Broker-J treat the "expiration" field as is done by
RabbitMQ.
> Per-message expiration is treated wrong for AMQP 0-9-1
> ------------------------------------------------------
>
> Key: QPID-8405
> URL: https://issues.apache.org/jira/browse/QPID-8405
> Project: Qpid
> Issue Type: Bug
> Components: Broker-J
> Affects Versions: qpid-java-broker-7.1.7
> Reporter: Thorsten Meinl
> Priority: Major
>
> 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|https://www.rabbitmq.com/ttl.html#per-message-ttl]. 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.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]