You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Tim Burrage (JIRA)" <ji...@apache.org> on 2015/03/26 18:04:54 UTC
[jira] [Created] (AMQ-5688) JMSRedeilivery not set if Consumer
restarted.
Tim Burrage created AMQ-5688:
--------------------------------
Summary: JMSRedeilivery not set if Consumer restarted.
Key: AMQ-5688
URL: https://issues.apache.org/jira/browse/AMQ-5688
Project: ActiveMQ
Issue Type: Bug
Affects Versions: 5.11.1
Reporter: Tim Burrage
With a Client Acked session:-
session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Pull a message off the broker:-
Message message = consumer.receive(1000);
Now kill the consumer JVM. Restart the consumer and pull a message off the consumer; it's the same message as received in the previous run, but JMSRedelivered=false, redeliveryCounter=0.
I've tried recovering the session before I read the first message off the queue (session.recover();) but this has no impact.
If however I read the first message AND THEN recover the session (not acking the just received message), the message is re-delivered and JMSRedelivered=true, redeliveryCounter=1.
I have tried with a transacted Consumer (session = connection.createSession(true, Session.SESSION_TRANSACTED);) this has the same problem, but I can't solve it with session.recover() as it's transacted.
This is a master/slave setup with 3 brokers. I am not restarting the broker between tests, simply killing the Consumer JVM
I've set persistJMSRedelivered, but this has no impact
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" persistJMSRedelivered="true">
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)