ActiveMQ DLQ

Once a message's re-delivery attempts exceeds the maximumRedeliveries configured for the Re-delivery Policy, a "Poison ACK" is sent back to the broker letting him know that the message was considered a poison pill. The Broker then takes the message and sends it to a Dead Letter Queue so that it can be analyzed later on.

The default Dead Letter Queue in ActiveMQ is called ActiveMQ.DLQ; all un-deliverable messages will get sent to this queue and this can be difficult to manage. So, you can set an individualDeadLetterStrategy in the destination policy map of the activemq.xml configuration file, which allows you to specify a specific dead letter queue prefix for a given queue or topic.

Configuration

You can configure ActiveMQ DLQ like below,

<broker>
...
  <destinationPolicy>
    <policyMap>
      <policyEntries>
        <!-- Set the following policy on all queues using the '>' wildcard -->
        <policyEntry queue=">">
          <deadLetterStrategy>
            <!-- Use the prefix 'DLQ.' for the destination name, and make the DLQ a queue rather than a topic -->
            <individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true"/>
          </deadLetterStrategy>
        </policyEntry>
      </policyEntries>
    </policyMap>
  </destinationPolicy> 
...
</broker>

Note: Message's re-delivery attempts exceeds ActiveMQ push those messages to Dead Letter Queue and you can find those messages in web console.

Web Console

In the default configuration ActiveMQ automatically starts the web console in the same VM as the broker.

URL: http://localhost:8161/admin

The default username and password is admin/admin. If needed we can change username and password in conf/jetty-realm.properties file.


For reference,