Topic
  • 3 replies
  • Latest Post - ‏2017-05-28T01:43:54Z by MoragH
piotrekbed
piotrekbed
3 Posts

Pinned topic MQ v8 QREMOTE PROBLEM

‏2017-05-26T13:33:57Z | mq8 remotequeue

Hi

I'm trying to define 2 QMgr communicating on each other. These are my definitions

----QM_XXX_BOT------
DEFINE QLOCAL(QL_BOT) REPLACE
 
DEFINE QREMOTE(QR_DO_AAA) +
       RNAME(QL_AAA) +
       RQMNAME(QM_XXX_AAA) +
       XMITQ(QT_DO_AAA) +
       REPLACE

DEFINE QLOCAL(QT_DO_AAA) +
       USAGE(XMITQ) +
       TRIGGER +
       TRIGTYPE(FIRST) +
       TRIGDATA(' ') +
       PROCESS(' ') +
       INITQ('SYSTEM.CHANNEL.INITQ') +
       REPLACE

DEFINE CHANNEL(C_DO_AAA) +
       CHLTYPE(SDR) +
       TRPTYPE(TCP) +
       CONNAME('192.168.62.190(1415)') +
       XMITQ(QT_DO_AAA) +
       REPLACE

DEFINE CHANNEL(C_Z_BBB) +
       CHLTYPE(RCVR) +
       TRPTYPE(TCP) +
       REPLACE
DEFINE LISTENER(LISTENER.XXX_BBB) TRPTYPE(TCP) PORT(1415) CONTROL(QMGR);    
ALTER QMGR CCSID(1208) CHAD(ENABLED);

-------------------------------------------
-------------------------------------------
----QM_XXX_AAA-----------
DEFINE QLOCAL(QL_AAA) REPLACE
 
DEFINE QREMOTE(QR_DO_BBB) +
       RNAME(QL_BOT) +
       RQMNAME(QM_XXX_BOT) +
       XMITQ(QT_DO_BBB) +
       REPLACE

DEFINE QLOCAL(QT_DO_BBB) +
       USAGE(XMITQ) +
       TRIGGER +
       TRIGTYPE(FIRST) +
       TRIGDATA(' ') +
       PROCESS(' ') +
       INITQ('SYSTEM.CHANNEL.INITQ') +
       REPLACE

DEFINE CHANNEL(C_Z_BBB) +
       CHLTYPE(SDR) +
       TRPTYPE(TCP) +
       CONNAME('192.168.62.139(1415)') +
       XMITQ(QT_DO_BBB) +
       REPLACE
 
DEFINE CHANNEL(C_DO_AAA) +
       CHLTYPE(RCVR) +
       TRPTYPE(TCP) +
       REPLACE
DEFINE LISTENER(LISTENER.XXX_AAA) TRPTYPE(TCP) PORT(1415) CONTROL(QMGR);
ALTER QMGR CCSID(1208) CHAD(ENABLED);

 

And that's what gets in the log on both QMGRS

 

AMQ9544: Messages not put to destination queue.

EXPLANATION:
During the processing of channel 'C_DO_AAA' one or more messages could not be
put to the destination queue and attempts were made to put them to a
dead-letter queue.  The location of the queue is 1, where 1 is the local
dead-letter queue and 2 is the remote dead-letter queue.
ACTION:
Examine the contents of the dead-letter queue.  Each message is contained in a
structure that describes why the message was put to the queue, and to where it
was originally addressed. Also look at previous error messages to see if the
attempt to put messages to a dead-letter queue failed. The program identifier
(PID) of the processing program was '2684'.

Firewall and SELinux are disabled. I have no idea what's going on.

Please help me. 

 

  • TomKane
    TomKane
    2 Posts

    Re: MQ v8 QREMOTE PROBLEM

    ‏2017-05-26T21:53:06Z  

    The reason code in the dead letter header will help you to understand why the message could not be put.  To browse that queue use a utility like ma01:

     

    q -ddf3 -i SYSTEM.DEAD.LETTER.QUEUE -m queue-manager-name

     

    the ddf3 option will format what it can of the message, including the dead letter header, look for the Reason there.

     

    [ 2402 bytes] Dead Letter Queue Header (MQDLH)
    StrucId      :'DLH '
    Version      :1
    Reason       :2053 (Queue full.)
    Dest. Queue  :'DUMM.SGG.E.DEV1                                 '
    Dest. QMgr   :'DUMMY                                           '
    MQEncoding   :0x'311'
    CCSID        :37
    Format       :'MQSTR   '
    PutApplType  :6 (UNIX)
    PutApplName  :'amqrmppa                    '
    Put Date     :'20150401'
    Put Time     :'18171462'
    

     

  • piotrekbed
    piotrekbed
    3 Posts

    Re: MQ v8 QREMOTE PROBLEM

    ‏2017-05-27T05:03:37Z  

    Hey
    It looks like the remote queue does not recognize RQMNAME and RNAME. I have no idea why.

     

    [  176 bytes] Dead Letter Queue Header (MQDLH)
    StrucId      :'DLH '
    Version      :1
    Reason       :271 (Transmission Q Message Error)
    Dest. Queue  :'                                                '
    Dest. QMgr   :'                                                '
    MQEncoding   :0x'222'
    CCSID        :1208
    Format       :'MQSTR   '
    PutApplType  :6 (UNIX)
    PutApplName  :'runmqchl                    '
    Put Date     :'20170527'
    Put Time     :'04541940'
    test
    No more messages.
    

     

  • MoragH
    MoragH
    131 Posts

    Re: MQ v8 QREMOTE PROBLEM

    ‏2017-05-28T01:43:54Z  

    The DLQ header shows the reason the sender channel reported the failure was MQFB_XMIT_Q_MSG_ERROR. IBM Knowledge Center has this to say about that error:-

    A message channel agent has found that a message on the transmission queue is not in the correct format. The message channel agent puts the message on the dead-letter queue using this feedback code.

    From the DLQ header you posted we can also see that the Dest. Queue and Dest. QMgr are both blank, where they should be filled in with the details from the QREMOTE definition that your application used. From your original post this was:-

    DEFINE QREMOTE(QR_DO_AAA) +
    RNAME(QL_AAA) +
    RQMNAME(QM_XXX_AAA) +
    XMITQ(QT_DO_AAA) +
    REPLACE

    We have assumed that the application opened this object QR_DO_AAA and then put a message to it. However you did not actually tell us that explicitly. Perhaps now would be a good time for you to tell us what the application that is trying to send the message to the remote queue manager actually did. That seems the next area to look into.

    For example, if the application had instead accidentally used QT_DO_AAA you might see this behaviour (I haven't tested to double check).

    Cheers,
    Morag

    Updated on 2017-05-28T01:45:32Z at 2017-05-28T01:45:32Z by MoragH