1

ローカル バインディングを介して MQ Queue から MDB を読み取っています。MQ キューからのメッセージが取得されていないことに気付く場合があります。キューの深さが 50000 に増加し、インスタンスの数がゼロになります。実行スレッドの総数は 25 です。物理マシンには 8 つの管理対象サーバーがあります。

4

1 に答える 1

1

それは有害なメッセージの問題のように聞こえます。キュー内のメッセージを配信できない場合 (無効なヘッダーや不明な形式など)、WMQ JMS クラスは再キューイングを試みます。まず、キューの BOQNAME および BOQTHRESH 属性の値を探します。これらが存在する場合、バックアウト カウントが BOQTHRESH を超えると、メッセージは BOQNAME で指定されたキューに配置されます。このキューへの再キューイングに問題がある場合、メッセージはデッド レター キューに置かれます。これを完了できない場合、MDB はメッセージの受信を停止します。

メッセージの再キューイングには、いくつかの問題が考えられます。

  • BOQNAME キューまたは DLQ が存在しません
  • リキュー宛先キューは存在しますが、メッセージを消費する ID には権限がありません
  • リキュー先のキューがいっぱいです
  • BOQNAME または BOQTHRESH に値がありません

バックアウト・キューをまだ定義していない場合は、バックアウト・キューを定義して、その名前を入力キューの BOQNAME 属性に入れます。次に、入力キューの BOQTHRESH 属性に値 (多くの場合、「10」が使用されます) を配置します。メッセージを消費するアプリケーションが新しいバックアウト キューに対して承認されていることを確認し、これらの変更を行った後にアプリケーションを再起動します。問題が有害なメッセージである場合、有害なメッセージがバックアウト キューに到達し、プライマリ入力キューが正常に排出されるはずです。

于 2011-05-30T17:03:31.767 に答える