Dead Letter Queue solution
My DLQ Solution Rule does not move normal messages from the dead letter queue. What do I do?
Follow the Diagnostic-checklist as follows:
- Determine if you have received any messages or codes. For this scenario, there are no messages or codes to look up.
- Issue the .D A command to verify that MainView AutoOPERATOR for MQ is installed and that the QAO product option key is implemented properly.Again, for this scenario, the product and the key are properly installed.
Use the Automation Control panel to inspect the Rule Set and Rules to verify that the Rule Set and the DLQ Rule are both enabled. Also check the automation strategy setting.The Automation Control panel shows that the Rule Set is enabled and the automation strategy is set to ALL.
If the automation strategy was set to FIRST, you might need to review the individual Rules and ensure that DLQ Rule is high enough in the Rule Set for a FIRST strategy to work.
If the automation strategy was set to MOST QUALIFIED, you should also review the individual Rules and ensure that there is not another Rule in the Rule Set that has more matching selection criteria set.
Figure 1. Automation Control panel
BMC Software ----------------- Automation Control ---------------- AutoOPERATOR
COMMAND ===> TGT ===> SYSE
Primary commands: Add, Statshow, Cmdshow DATE --- 01/02/22
TIME --- 11:19:08
Automation Status ===> ACTIVE (Active, Inactive)
Automation Strategy ===> ALL (Individual, All, First, Qualified)
Honor MPF Suppression ===> YES (NO/YES)
Automation Library
LC CMDS --- (S)elect, (E)nable, (D)isable, (T)est, (SA)ve
(M)ove, (B)efore or (A)fter, (F)ilter Criteria
LC Rule-Set Status Rules Fired Filtered Date Time Strategy
___ AAORULBQ ENABLED 16 0 0 YY/MM/DD 11:17:54 ALL
___ AAORULBA DISABLED N/A N/A N/A N/A N/A
___ AAORULBB DISABLED N/A N/A N/A N/A N/A
___ AAORULBC DISABLED N/A N/A N/A N/A N/A
___ AAORULBD DISABLED N/A N/A N/A N/A N/A
___ AAORULBE DISABLED N/A N/A N/A N/A N/A
___ AAORULBF DISABLED N/A N/A N/A N/A N/A
___ AAORULBG DISABLED N/A N/A N/A N/A N/A
___ AAORULBH DISABLED N/A N/A N/A N/A N/A
___ AAORULBP DISABLED N/A N/A N/A N/A N/A
___ AAORULBR DISABLED N/A N/A N/A N/A N/A
___ AAORULBS DISABLED N/A N/A N/A N/A N/A
___ AAORULBV DISABLED N/A N/A N/A N/A N/ASelect the Rule Set.Figure 2 shows that the three DLQ Rules MQDEDQ01, MQDEDQ02, and MQDEDQ03 are enabled.
Figure 2. Rule Set Overview panel
BMC Software ----------------- Rule Set Overview ---------------- AutoOPERATOR
COMMAND ===> TGT --- SYSE
Rule Set ID: AAORULBQ DATE --- 01/02/22
Primary commands: Add, Save, Sort, Unsort, Reset, Filter TIME --- 11:24:10
LC CMDS --- (S)elect, (E)nable, (D)isable, (T)est, (DE)lete, (I)nsert
(C)opy/(CC)opy, (M)ove/(MM)ove, (B)efore or (A)fter, (R)epeat
Sort Criterion: Filter ENABLED right/left
LC Rule-id Stat Text-id Type Fired EXEC Changed ID
________ _ ________________ ____ ________ ________ _____ ________
___ MQINT001 DIS Q_SERVICE_INTERV MQS 0 YY/MM/DD 11:09 BMC1
___ MQINT002 DIS Q_SERVICE_INTERV MQS 0 YY/MM/DD 11:10 BMC1
___ MQQDP001 DIS Q_DEPTH_HIGH MQS 0 YY/MM/DD 11:10 BMC1
___ MQQDP002 DIS Q_DEPTH_LOW MQS 0 YY/MM/DD 11:10 BMC1
___ MQDEDQ01 ENA MQS 0 YY/MM/DD 12:34 BMCUSER
___ MQDEDQ02 ENA TIME 0 QMQDEDQ2 YY/MM/DD 07:53 BMCUSER
___ MQDEDQ03 ENA MQS 0 YY/MM/DD 12:35 BMCUSER
___ MQARC001 ENA MQS 0 QMQUNLDQ YY/MM/DD 13:20 BMCUSER
___ MQARC002 ENA QA6033I JRNL 0 YY/MM/DD 15:09 BMCUSER
___ MQARC003 ENA QA6033I JRNL 0 YY/MM/DD 15:19 BMCUSER
___ MQARC004 ENA QA6033I JRNL 0 YY/MM/DD 13:24 BMCUSER
___ MQARC005 ENA QA6033I JRNL 0 YY/MM/DD 09:27 BMCUSER
___ MQDIA001 ENA UNKNOWN_OBJECT_N MQS 0 YY/MM/DD 09:30 BMC1
___ MQDIA002 ENA NOT_AUTHORIZED MQS 0 YY/MM/DD 09:24 BMC1Editing Rule MQDEDQ01 shows the Rule has the correct queue manager and queue name specified.
Figure 3. Selection Criteria panel
BMC Software ------------- Selection Criteria - MQS ------------ AutoOPERATOR
COMMAND ===> TGT --- SYSE
Rule-set === AAORULBQ Rule-id === MQDEDQ01
Queue Identification: (1 to 12 Queue Managers)
Manager(s) ===> CSBD
Queue Id ===> &!QDED.IMFOQMGR
Message Identification:
Format ===> USER (Value from MD Format field)
Event Type ===> (Enter ? for help)
Sub Len Op Value
Msgid ===> ___ : ___ __ ____________________________________________
CorrelId ===> ___ : ___ __ ____________________________________________
Msg Buffer ===> ___ : ___ __ ____________________________________________
___________________
Press ENTER to continue, END return to Detail Control, CANCEL to cancel changesSee MainView-AutoOPERATOR-for-MQ-automation-statistics for descriptions of the shared variable QDEDxxxx (the name of the dead letter queue) and the TSO variable, IMFQRPQM (the name of the queue manager).
Use the IBM MQ Workstation panel to determine if the queue manager is connected and enabled for automation.This panel shows that MainView AutoOPERATOR is connected to the queue manager (CSQ1) and is monitoring 15 queues:
BMC Software ------------ IBM MQ Workstation --------------- AutoOPERATOR
COMMAND ===> TGT ===> EP01
Interval ==> 3 INPUT DATE --- YY/MM/DD
Commands: ALL, EQI xxx, NEQI xxx, EE xxx, NEE xxx TIME --- 08:20:32
---------------------------- Performance Statistics ---------------------------
Total Queues Included 6
Total MQS Messages Arrived 1 Total MQS Messages Handled 0
Instrument. Events Arrived 1 Instrument. Events Handled 0
User Messages Arrived 0 User Messages Handled 0
Current Instr.Arrival Rate/Min 0 Peak Instr. Arrival Rate/Min 0
Rule Generated Alerts 0 Rule Triggered EXECs 0
-------------------------------- Queue Management -----------------------------
Queues Event Qs Enabled
Queue Manager Incl./Tot Included Events
___________________________________________
CSQ1 6/24 SLIPR
******************************** Bottom of Data *******************************Issue the BBI command .D V QDED.CSQ1 to display the name of the dead letter queue for your z/OS queue manager.The output will look like this panel:
BMC Software ------------------ Log Display ------------------ General services
COMMAND ===> TGT ===> LOCAL
Line 2 Log #1 Status INPUT Time 16:07:06 INTV===> 3
16:07:05 .D V QDED.CSQ1
16:07:06 IM9100I COMMAND ACCEPTED JB61
16:07:06 IM9207I SHARED VARIABLE POOL DISPLAY JB61
16:07:06 IM9211I SELECTED: QDED.CSQ1 JB61
16:07:06 IM9212I QDED.CSQ1 DEAD.LETTER.QUEUE JB61
********************************** END OF LOG *********************************Type the %QMQDSP00 command in the BBI Journal to check the status of the dead letter queue.The dead letter queue (DEAD.LETTER.QUEUE) is not eligible for automation.
.QMQDSP00 EID=00021 excl_by_user 17 local CSQ1 DEAD.LETTER.QUEUEYou can also edit and review BBPARM member AAOMQLxx to determine if the dead letter queue has been included. As you can see from the picture below, an incorrect dead letter queue name was used and needs to be changed to DEAD.LETTER.QUEUE.
TYPE(INCL) QMGR(CS*) QUEUE(SYSTEM.ADMIN.*)
TYPE(INCL) QMGR(CS*) QUEUE(SYSBMC.SYSE.EVENTS)
TYPE(INCL) QMGR(CS*) QUEUE(SYSBMC.DISTRIB.EVENTS)
TYPE(INCL) QMGR(CS*) QUEUE(BBOMVAO.QUEUE*)
TYPE(EXCL) QMGR(CS*) QUEUE(BBOMVAO.SETUP.QUEUE*)
TYPE(INCL) QMGR(CS*) QUEUE(BBOMVAO.LIVE.*)
TYPE(INCL) QMGR(CS*) QUEUE(BBOMVAO.PERM.QUEUE)
TYPE(INCL) QMGR(CS*) QUEUE(SYSTEM.DEAD.LETTER.QUEUE)
T(E) QMGR(*) QUEUE(*)The rule did not move this user message to another queue because the wrong name was used in the BBPARM member AAOMQLxx to refer to the active dead letter queue.
- Change the BBPARM member AAOMQLxx to include SYSTEM.DEAD.LETTER.QUEUE instead of DEAD.LETTER.QUEUE.
- Issue the .E MQ 00 command.The Rule now fires.