[
https://issues.apache.org/activemq/browse/AMQ-1072?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_39752
]
Ian Levesque commented on AMQ-1072:
-----------------------------------
I believe this issue may be related to the behavior I'm observing. Maybe this
is the desired implementation, but it appears to me that in 4.1.1 (possibly
others) timeToLive is only enforced by the MessageConsumer receive() method,
not the MessageProducer. This has (for me) the undesired side effect of
allowing expired messages to pile up in the MessageProducer queue until the JVM
runs out of RAM and the application fails unless a MessageConsumer is
connected. This would also cause MessageListeners to receive all messages,
expired or not.
Is that behavior intended?
> "TimeToLive" doesn't work on MessageListener
> --------------------------------------------
>
> Key: AMQ-1072
> URL: https://issues.apache.org/activemq/browse/AMQ-1072
> Project: ActiveMQ
> Issue Type: Bug
> Components: JMS client
> Affects Versions: 4.0.1
> Reporter: Joseph Leung
> Assignee: Rob Davies
> Fix For: 4.1.0
>
>
> When a queue message is consumed using MessageListener throught the
> setMessageListener method,
> it could recieve the messages even if they are expired. (While using
> consumer.receive() will discard them).
> Reproduce Steps:
> 1. deliver a number of message to a queue with a short expire time.
> 2. wait until the message should be expired.
> 3. use MessageConsumer.receive() method to receive the messages,
> -- You should not receive any messages, and through the monitor console,
> you should see some
> messages are left and not discarded.
> 4. stop the receive() method.
> 5. add a MessageListener to the same queue, the messages which found left is
> received by the
> onMessage() method.
> ps. if step3 is skipped, likely you would receive all the expired message.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.