19.2. Dead Letter Addresses
To prevent a client infinitely receiving the same undelivered message (regardless of what is causing the unsuccessful deliveries), messaging systems define dead letter addresses: after a specified unsuccessful delivery attempts, the message is removed from the queue and send instead to a dead letter address.
Any such messages can then be diverted to one or more queues where they can later be perused by the system administrator for action to be taken.
HornetQ addresses can be assigned a dead letter address. Once the messages have been unsuccessfully delivered for a given number of attempts, they are removed from the queue and sent to the dead letter address. These dead letter messages can later be consumed for further inspection.
19.2.1. Configuring Dead Letter Addresses
The dead letter address is defined in the
address-setting
configuration:
<!-- undelivered messages in exampleQueue will be sent to the dead letter address deadLetterQueue after 3 unsuccessful delivery attempts--> <address-setting match="jms.queue.exampleQueue"> <dead-letter-address>jms.queue.deadLetterQueue</dead-letter-address> <max-delivery-attempts>3</max-delivery-attempts> </address-setting>
If a
dead-letter-address
is not specified, messages will be removed after max-delivery-attempts
unsuccessful attempts.
By default, messages are redelivered a maximum of 10 times. Set
max-delivery-attempts
to -1
for infinite redeliveries.
A dead letter address can be set globally for a set of matching addresses, with
max-delivery-attempts
set to -1
for a specific address setting to allow infinite redeliveries only for this address.
Address wildcards can be used to configure dead letter settings for a set of addresses (see Chapter 11, Understanding the HornetQ Wildcard Syntax).