Sun Java System Message Queue 3.7 UR1 管理ガイド

メッセージがコンシューマに到達しない

症状:

考えられる原因:

考えられる原因: 制限の動作が、ブローカでのメッセージの削除を引き起こしている。

送信先メモリー内のメッセージ数またはメッセージのバイト数が設定済みの制限に達すると、ブローカはメモリーリソースを節約しようとします。これらの制限に達したときにブローカが選択する 3 つの設定可能な動作によって、メッセージが失われることがあります。

この問題の原因を確認するには: 「デッドメッセージキューにメッセージが含まれる」の説明に従い、デッドメッセージキューを確認します。特に「メッセージ数かメッセージサイズが送信先の制限を超える」の指示に従ってください。REMOVE_OLDESTREMOVE_LOW_PRIORITY の理由を探します。

問題を解決するには: 送信先の制限を上げます。たとえば、次のように指定します。

imqcmd update dst -n MyDest - o maxNumMsgs=1000

考えられる原因: メッセージタイムアウト値が期限切れになる。

ブローカは、タイムアウトして期限切れになったメッセージを削除します。送信先がメッセージで過分にバックログされている場合、生存期間の値が短すぎるメッセージは削除されます。

この問題の原因を確認するには: QBrowser デモアプリケーションを使用し、デッドメッセージキューの内容を調べ、メッセージがタイムアウトになっているかどうかを確認します。QBrowser デモのプラットフォームごとの場所については、付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照し、アプリケーション例と場所の表を調べてください。

以下は、Windows プラットフォームにおける呼び出し例です。

cd \MessageQueue3\demo\applications\qbrowser java QBrowser

QBrowser のメインウィンドウが表示されたら、キュー名 mq.sys.dmq を選択してから「Browse」をクリックします。次のようなリストが表示されます。

mq.sys.dmq のメッセージを表示する QBrowser。メッセージごとに、番号、タイムスタンプ、タイプ、モード、および優先度が表示される。

メッセージをダブルクリックすると、そのメッセージの詳細が表示されます。

メッセージ詳細ウィンドウ。最上部ペインにはメッセージ、中間ペインにはプロパティー、最下部ペインにはメッセージが表示される。

メッセージの JMS_SUN_DMQ_UNDELIVERED_REASON プロパティー値が EXPIRED に設定されているかどうか確認してください。

問題を解決するには: アプリケーション開発者と相談し、生存時間の値を上げます。

考えられる原因: クロックが同期化しない。

クロックが同期化されていない場合、ブローカによるメッセージの生存期間の計算が誤りとなり、メッセージが有効期限より早く削除される場合があります。

この問題の原因を確認するには: ブローカのログファイルで、B2102B2103B2104 のメッセージを探します。このメッセージはすべて、クロックスキューが検出されたことを報告します。

問題を解決するには: 「システムリソースの準備」の説明に従い、時刻同期プログラムが動作していることを確認します。

考えられる原因: コンシューミングクライアントが接続でのメッセージ配信の開始に失敗した。

クライアントコードが接続を確立し、その接続上でメッセージ配信を開始するまで、メッセージは配信できません。

この問題の原因を確認するには: クライアントコードが接続を確立しメッセージ配信を開始したことを確認します。

問題を解決するには: 接続を確立しメッセージ配信を開始するように、クライアントコードをプログラミングし直します。