hi, version: activemq-5.8.0
we don't want client/consumer redelivery, so therefore we have set maximumRedeliveries=0 on the connectionFactory (ActiveMQConnectionFactory.java). Simple local (single-instance-broker) tests verfied that no redelivery was performed. today we tried a simple failover scenario with a master/slave (shared filesystem) environment using kahadb. we send one message to some queue (via web-console). this message is received by a consumer with transacted-session and connection.redeliveryPolicy.maxiumRedeliveries=0 - during the message is processed (messagelistener.onmessage) we just killed the master to see if the failover to the slave works correctly we noticed the following error in our log-files (but not always) Execution of JMS message listener failed, and no ErrorHandler has been set. javax.jms.TransactionRolledBackException: rolling back transaction (TX:ID:blablabla-55731-136 4392340448-5:1:1) post failover recovery. 1 previously delivered message(s) not replayed to consumer: ID:blablabla-55731-1364392340448-5:1:1:1 This message comes from ActiveMQMessageConsumer.java:1120 as far as I understand the code this should only happen if redeliveryPolicy is > 0? (or do we have to set maximumRedelivery to -1 as the constant RedeliveryPolicy.NO_MAXIMUM_REDELIVERIES states?) Btw. there is a proptery "failoverRedeliveryWaitPeriod" in ActiveMQMessageConsumer (we were shortly heading this direction because of the "failover"-prefix :D). This property is set in the constructor in line 265: this.failoverRedeliveryWaitPeriod = session.connection.getConsumerFailoverRedeliveryWaitPeriod(); However ActiveMQConnectionFactory.java does not provide this property, so there it is not possible to set this property via ActiveMQConnectionFactory -> eventually this might be a bug? If this property is supposed to be set via the connectionFactory, then ActiveMQConnectionFactory.java should have: private long consumerFailoverRedeliveryWaitPeriod; public long getConsumerFailoverRedeliveryWaitPeriod() { return consumerFailoverRedeliveryWaitPeriod; } public void setConsumerFailoverRedeliveryWaitPeriod(long consumerFailoverRedeliveryWaitPeriod) { this.consumerFailoverRedeliveryWaitPeriod = consumerFailoverRedeliveryWaitPeriod; } protected void configureConnection(ActiveMQConnection connection) throws JMSException { .... connection.setConsumerFailoverRedeliveryWaitPeriod(consumerFailoverRedeliveryWaitPeriod); } public void populateProperties(Properties props) { ... props.setProperty("consumerFailoverRedeliveryWaitPeriod", Long.toString(consumerFailoverRedeliveryWaitPeriod)); } thank you, daniel