2016-07-19 6 views
0

デッドレターキューに多数のメッセージが表示されていますが、この原因を理解できません。IBM MQ:デッドレターの理由を知るには?

私はそのようなメッセージをブラウズするためにMQ Explorerを使用しています。ここで私はデッドレターヘッダに見えるものです:これは問題の本当の原因が何であるかを私に教えてくれない

enter image description here

。どうすればわかりますか?

私はthis article from IBMを読んでおり、その理由はおそらくという形式のメッセージであると言います。どのようにフォーマットが間違っていますか?

(注:私は、生産者と消費者の両方の制御によ)あなたは原因がフィールド「理由」である :-)ツリーの森を欠場

答えて

0

私が期待したように、MQRC_BACKOUT_THRESHOLD_REACHEDの理由は本当にノックオン効果です。実際の理由を見つけるには、デッドレターヘッダー(上記)のスクリーンショットのPut application nameフィールドに表示される内容に応じて、消費者側またはプロデューサー側のログを調べる必要があります。

JMSクラスのMQは、現在のディレクトリ内のログファイル(mqjms.log.x)を生成することがわかりました。これを見ると、問題の真の理由が分かります。

July 19, 2016 4:48:33 PM CEST[Queue Service thread] com.ibm.msg.client.wmq.common.internal.messages.WMQReceiveMarshal 
A received message could not be correctly parsed. 

EXPLANATION: 
The message with messageID = '414D512064657620202020202020202012048D5720064E04' and correlationID = '310000000000000000000000000000000000000000000000' could not be correctly parsed. The last successful data read from the message was at position '192' in buffer '0000: 5246 4820 0000 0002 0000 00c0 0000 0111 RFH ............ 
0010: 0000 04b8 4d51 5354 5220 2020 0000 0000 ....MQSTR .... 
0020: 0000 04b8 0000 0020 3c6d 6364 3e3c 4d73 ....... <mcd><Ms 
0030: 643e 6a6d 735f 7465 7874 3c2f 4d73 643e d>jms_text</Msd> 
0040: 3c2f 6d63 643e 2020 0000 0074 3c6a 6d73 </mcd> ...t<jms 
0050: 3e3c 4473 743e 7175 6575 653a 2f2f 2f6d ><Dst>queue:///m 
0060: 7971 7565 7565 3c2f 4473 743e 3c54 6d73 yqueue</Dst><Tms 
0070: 3e31 3436 3839 3339 3731 3338 3234 3c2f >1468939713824</ 
0080: 546d 733e 3c45 7870 3e31 3436 3839 3339 Tms><Exp>1468939 
0090: 3734 3338 3234 3c2f 4578 703e 3c43 6964 743824</Exp><Cid 
00a0: 3e49 443a 3331 3c2f 4369 643e 3c44 6c76 >ID:31</Cid><Dlv 
00b0: 3e31 3c2f 446c 763e 3c2f 6a6d 733e 2020 >1</Dlv></jms> 
00c0: 3c64 6174 614d 7367 2073 656e 7454 696d <mymessage ..... 
................. 

' with exception ' 
         Message : java.lang.Exception 
         Class : class java.lang.Exception 
         Stack : com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1900) 
           : com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receiveInternal(WMQSyncConsumerShadow.java:231) 
           : com.ibm.msg.client.wmq.internal.WMQConsumerShadow.receive(WMQConsumerShadow.java:1471) 
           : com.ibm.msg.client.wmq.internal.WMQMessageConsumer.receive(WMQMessageConsumer.java:659) 
           : com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveInboundMessage(JmsMessageConsumerImpl.java:1036) 
           : com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive(JmsMessageConsumerImpl.java:461) 
           : com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive(JmsMessageConsumerImpl.java:495) 
           : com.ibm.mq.jms.MQMessageConsumer.receive(MQMessageConsumer.java:209) 
           : com.addicticks.avenuemq.client.base.connection.QueueService.recvMessages(QueueService.java:129) 
           : com.addicticks.avenuemq.client.base.connection.QueueService.run(QueueService.java:92) 
           : java.lang.Thread.run(Thread.java:745) 
' with MQMD 'version:2(0x2) report:0(0x0) msgType:8(0x8) expiry:300(0x12c) feedback:0(0x0) encoding:273(0x111) codedCharSetId:1208(0x4b8) format:'MQHRF2 ' priority:4(0x4) persistence:0(0x0) msgId:414D512064657620202020202020202012048D5720064E04 correlId:310000000000000000000000000000000000000000000000 backoutCount:0(0x0) replyToQ:'            ' replyToQMgr:'dev            ' userIdentifier:'peter  ' accountingToken:160105150000008D3439C9CC13CC025B66F34BE903000000000000000000000B applIdentityData:'        ' putApplType:28(0x1c) putApplName:'Carrefour Server   ' putDate:'20160719' putTime:'14483382' applOriginData:' ' groupId:000000000000000000000000000000000000000000000000 msgSeqNumber:1(0x1) physicalMsgOffset:0(0x0) msgFlags:0(0x0) originalLength:-1(0xffffffff) ' 

EXPLANATION: 
null 

ACTION: 
null 

あなたが持っています。何とか私は無効なJMSメッセージを作成することができましたが、プロデューサ側では問題があることに気づかずにいました。

私はそれを理解する必要がありますが、それは別の投稿のトピックになります。

要するに、問題の答えは、バックアウトは単にノックオン効果です。本当の理由は、IBMの言う通り、間違ってフォーマットされたメッセージです。これを理解する唯一の方法は、メッセージプロデューサまたはメッセージコンシューマのどちらかによってダンプされるログを調べることです。私のケースでは、リモートキューは関係しないため、メッセージコンシューマは中間キューマネージャではなく、実際の宛先アプリケーションです。それがログを見つけた場所です。

0

。 MQRC_BACKOUT_THRESHOLD_REACHEDこれは、here in Knowledge Center

MQRC_BACKOUT_THRESHOLD_REACHED(0x93A; 2362)に記載されている 原因メッセージはQLOCALで定義されてバックアウトのしきい値に達しているが、いかなるバックアウト キューが定義されていません。バックアウト キューを定義できないプラットフォームでは、メッセージはJMS定義バックアウトしきい値の に達しています。 アクション これが必要でない場合は、該当するQLOCALのバックアウト・キューを定義します。また、複数のバックアウトの原因を探します。

+0

考えられる原因は何らかの理由でMQがポイズンメッセージをバックアウトキューに配信できないためです。そのため、queuemanagerのエラーディレクトリでAMQERRORxxx.logを調べます。 – gouda

+0

おそらくこれは私がIBM MQを理解していないのですが、AFAIKはバックアウトが別の問題の*結果*です。なぜ最初に取り戻す必要がありますか? – peterh

+0

AMQERRORxxx.logに何が問題になっているかについての情報はありません。 – peterh