How the rules table is processed
The DLQ handler searches the rules table for a rule whose pattern matches
a message on the DLQ. The search begins with the first rule in the table,
and continues sequentially through the table. When the DLQ handler finds a
rule with a matching pattern, it takes the action from that rule. The DLQ
handler increments the retry count for a rule by 1 whenever it applies that
rule. If the first try fails, the DLQ handler tries again until the number
of tries matches the number specified on the RETRY keyword. If all attempts
fail, the DLQ handler searches for the next matching rule in the table.
This process is repeated for subsequent matching rules until an action
is successful. When each matching rule has been attempted the number of times
specified on its RETRY keyword, and all attempts have failed, ACTION (IGNORE)
is assumed. ACTION (IGNORE) is also assumed if no matching rule is found.
Notes:
- Matching rule patterns are sought only for messages on the DLQ that begin
with an MQDLH. Messages that do not begin with an MQDLH are reported periodically
as being in error, and remain on the DLQ indefinitely.
- All pattern keywords can be allowed to default, such that a rule can consist
of an action only. Note, however, that action-only rules are applied to all
messages on the queue that have MQDLHs and that have not already been processed
in accordance with other rules in the table.
- The rules table is validated when the DLQ handler starts, and errors are
flagged at that time. (Error messages issued by the DLQ handler are described
in WebSphere MQ Messages.)
You can make changes to the rules table at any time, but those changes do
not come into effect until the DLQ handler restarts.
- The DLQ handler does not alter the content of messages, the MQDLH, or
the message descriptor. The DLQ handler always puts messages to other queues
with the message option MQPMO_PASS_ALL_CONTEXT.
- Consecutive syntax errors in the rules table might not be recognized because
the rules table is designed to eliminate the generation of repetitive errors
during validation.
- The DLQ handler opens the DLQ with the MQOO_INPUT_AS_Q_DEF option.
- Multiple instances of the DLQ handler can run concurrently against the
same queue, using the same rules table. However, it is more usual for there
to be a one-to-one relationship between a DLQ and a DLQ handler.