[ 
https://issues.apache.org/jira/browse/QPID-8405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17024181#comment-17024181
 ] 

Thorsten Meinl commented on QPID-8405:
--------------------------------------

I see. So much for standards and their specifications...
Having a RabbitMQ compatible mode would indeed be useful. Currently we solve it 
in the application by checking which message broker is being used and either 
add the current timestamp to the TTL for the message or not.
Another suggestion would be to issue a warning if the expiration is way in the 
past (e.g. 60,000 in our case). We were using the RabbitMQ client and QPid as 
the broker and there are no signs whatsoever that something is going wrong 
except that messages simply don't arrive at consumers. After some time you see 
a "message discarded" log entry from QPid but that is way after it has been 
submitted and in some cases also more or less matched the desired TTL.

> 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]

Reply via email to