Hi all,

 

we have set up a cluster of machines using ActiveMQ with Master/Slave
failover protocol. All messages use a TTL of 120 seconds and if TTL is
reached are sent to an individual DLQ.

Basically this works fine. However, there is one scenario where the
automatic routing of a message to the DLQ does not work:

 

-          a client receives message X but cannot commit the message
because of some error (e.g. network failure, hardware crash, etc.)

-          the ActiveMQ master crashes (clients now failover to the
slave)

-          message X reaches its TTL. This can be seen in the JMX
counters (EnqueueCount=1, DequeueCount=1, DispatchCount=0,
ExpiredCount=1)

-          message X is not routed to the DLQ as expected, the DLQ
remains empty

 

There are no warnings or error messages in the log files. Here is our
current broker and DLQ strategy configuration:

 

    <broker xmlns="http://activemq.apache.org/schema/core";
brokerName="localhost" persistent="true"
masterConnectorURI="tcp://queuemaster:61616"
shutdownOnMasterFailure="false">

 

       <policyEntry queue=">" producerFlowControl="true"
memoryLimit="1mb">       

              <deadLetterStrategy>

                     <individualDeadLetterStrategy queuePrefix="todo."
processNonPersistent="true" processExpired="true" />

              </deadLetterStrategy>

       </policyEntry>

 

 

Is there something that has to be addressed in the configuration to
support this scenario ?

 

 

Bye,

Daniel

Reply via email to