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:

  1. Determine if you have received any messages or codes. For this scenario, there are no messages or codes to look up.
  2. 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.
  3. 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/A
  4. Select 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 BMC1

    Editing 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 changes

    See 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).

  5. 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 *******************************
  6. 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 *********************************
  7. 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.QUEUE

    You 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(*)

     

    Warning

    Note

    You must issue the BBI control command .RESET MQ 00 to activate the AAOMQLxx member and at least one enabled Rule must refer to this queue manager for MainView AutoOPERATOR to connect to the queue manager.

    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.

  8. Change the BBPARM member AAOMQLxx to include SYSTEM.DEAD.LETTER.QUEUE instead of DEAD.LETTER.QUEUE.
  9. Issue the .E MQ 00 command.The Rule now fires.

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*

MainView AutoOPERATOR 8.2