2

JMS キュー (WebSphere 7) をリッスンする Spring プロジェクト (3.0.5) があります。キュー リスナーのオン/オフを切り替える機能が必要です。現在、独自の RESTful エンドポイントを介して DefaultMessageListenerContainer.start() および stop() をプログラムで呼び出して、リスナーのオン/オフを切り替えています。

リスナーを 2 ~ 3 回 (オン/オフ/オンまたはオン/オフ/オン/オフ/オン) 切り替えた後、リスナーがハング状態になり、オフに切り替えることができないことがわかりました。

何が起こっているかをデバッグするために、ログ レベルを Trace に設定します。リスナーが正常にオンになると、ログに次のメッセージが表示されます。

XXXX-XX-XX [myListenerContainer-1] TRACE cgcrcmMessageListenerContainer - doReceiveAndExecute - セッション [com.ibm.mq.jms.MQQueueSession@1872c950] のコンシューマー [com.ibm.mq.jms.MQQueueReceiver@45486b51] がメッセージを受信しませんでした

ただし、リスナーがハングする前に最後にオンにすると、ログにこのメッセージが表示されません。

その他の詳細:

  • ハング状態への移行は、キューにメッセージが入っているかどうかに関係なく再現可能です。
  • ハングする前にリスナーを最後にオンにしたときに、メッセージをキューに入れることでハング状態を「修正」できます。メッセージが受信されると、ログに正常なトレース メッセージが表示され、リスナーをオフに切り替えることができます。
4

0 に答える 0