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

Robbie Gemmell commented on QPID-5057:
--------------------------------------

{quote}
I checked neither expiration or timestamp is mentioned in consumers in Java 
client, hence no reverse conversion is required to be added to the patch.
{quote}

There is a getJMSTimestamp method to match the setter, which would presumably 
need updated to handle the suggested change. However, I do tend to agree with 
Gordon that this doesn't seem particularly worth changing unless there is a 
larger issue driving it, particularly as we almost certainly don't have to 
worry about interoperability with 0-10 implementations from other providers.

Either way, as mentioned before the 0-9-1 (and 0-8/0-9) specification does not 
actually specify the units to be in seconds, so I beleive we should leave the 
non-0-10 section of the client unchanged.


                
> 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
>         Attachments: QPID-5057.patch, SendMsgTimestamp.java
>
>
> 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]

Reply via email to