Pavel Moravec created QPID-5057:
-----------------------------------
Summary: Delivery properties "expiration" and "timestamp" are in
milliseconds instead of seconds
Key: QPID-5057
URL: https://issues.apache.org/jira/browse/QPID-5057
Project: Qpid
Issue Type: Bug
Components: Java Client
Affects Versions: 0.22
Reporter: Pavel Moravec
Priority: Minor
Per AMQP 0.10 specification, message delivery properties "expiration" and
"timestamp" are of type datetime, that is 64 bit POSIX time_t format, i.e.
"seconds since Epoch".
But Java client implementation of both 0.8 and 0.10 protocol versions encodes
the properties in milliseconds. See e.g.
org/apache/qpid/client/BasicMessageProducer_0_10.java:
long currentTime = 0;
if (timeToLive > 0 || !isDisableTimestamps())
{
currentTime = System.currentTimeMillis();
}
if (timeToLive > 0)
{
deliveryProp.setTtl(timeToLive);
message.setJMSExpiration(currentTime + timeToLive);
}
if (!isDisableTimestamps())
{
deliveryProp.setTimestamp(currentTime);
message.setJMSTimestamp(currentTime);
}
I.e. there should be "currentTime = System.currentTimeMillis()/1000;", rather.
The same is in 0.8 client as well (while AMQP 0.8 specification does not know
either of the two delivery properties).
I could propose a trivial patch for the 0.8 and 0.10 client, but I am not sure
how this affects:
- AMQP 1.0 implementation I am not familiar with
- (Java only?) broker or other clients utilizing the properties
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]