[
https://issues.apache.org/activemq/browse/AMQNET-253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=59507#action_59507
]
Andreas Ländle commented on AMQNET-253:
---------------------------------------
Hi Timothy,
sorry for being unclear - the bug was introduced with the fix for AMQNET-245 -
let me explain...
a) The producer only set's the timestamp if it's DisableMessageTimestamp
property is false
b) The expiration date of a message is calculated ( ExpirationDate = TimeStamp
+ TimeToLive)
So since the fix for AMQNET-245 the TimeStamp isn't initialized in the
constructor of the Message class (trunk: SVN# 929131 - Message.cs)
So imagine - the timestamp of the message is never set (value is 0), but i set
the TimeToLive property of the message!
The message gets send and it's expiration date is calculated - which means
ExpirationDate = 0 + TimeToLive.
Indeed the problem only occurs in a very rare case - i didn't want to transmit
the timestamp but i want to transfer an expiration date (it's important to us
to reduce data volume).
Hope things got clearer now - if not please let me know and i will try to find
a even better explanation.
> STOMP: Expiration date of message are corrupt if the producer 'timestamping'
> is disabled
> ----------------------------------------------------------------------------------------
>
> Key: AMQNET-253
> URL: https://issues.apache.org/activemq/browse/AMQNET-253
> Project: ActiveMQ .Net
> Issue Type: Bug
> Components: NMS
> Affects Versions: 1.2.0
> Reporter: Andreas Ländle
> Assignee: Jim Gomes
> Priority: Minor
>
> Please Note: Since NMS has dependencies between the NMSTimestamp and
> NMSTimeToLive properties - Disabling the timestamps on the producer results
> in corrupted expiration dates of the messages!
> Reproduction:
> Set the TTL of a message to 1 hour - send this message via a producer which
> has DisableMessageTimestamp=true.
> Now take a look at the "expires" field of the transfered message - it's value
> is all to small (and so the broker would discard the message immediately).
> (previous to the fix for https://issues.apache.org/activemq/browse/AMQNET-245
> the TimeStamp of a message was set during construction - so the
> interconnection of Timestamp and TTL wasn't so obvious)
> Workaround:
> I have worked around this issue with a dirty hack - i just bypass the
> TTL-Timespan.
> var stompMessage = nmsMessage as BaseMessage;
> if (stompMessage != null)
> { stompMessage.Expiration = DateUtils.ToJavaTimeUtc(myExpirationDate); }
> Please let me know if i was unclear or if you need more information.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.