2

WebSphere MQ でキューをクリアする際、clear コマンドと mqget API 呼び出しの違いは何ですか?

4

2 に答える 2

5

CLEAR コマンドは、キューをクリアする単一のコマンドを発行しますが、MQGET コマンドを使用したクリアは、キューが空になるまでキューを読み取ります。

実際には、キューの排他ロックを取得しなくても、MQGET を使用してクリアできます。一方、キューがどこかで使用中の場合、CLEAR コマンドは失敗します。

IBM のドキュメントには、次のように違いが記載されています。

  • CLEAR コマンドを使用すると、すべてのメッセージがキューから消去されます。ただし、キューが別のアプリケーションによって排他的に開かれている場合、またはキューにコミットされていないメッセージが含まれている場合、コマンドはすぐに失敗し、どのメッセージもクリアされません。
  • MQGET API 呼び出しを使用すると、使用可能なメッセージがなくなるまでメッセージがキューから取得されます。ただし、MQGET はコミットされていないメッセージを認識しません。つまり、コミットされていないメッセージがキューに残っている可能性があります。また、キューがすでに別のアプリケーションによって排他的に開かれている場合、コマンドは失敗する可能性があります。
于 2011-12-02T14:24:31.900 に答える
1

CLEAR コマンドがキュー ファイルのサイズを空のキューのサイズにまで縮小することも確認しました。

Clear QL を使用すると、WMQ はキュー ファイルも破棄し、再作成します。通常、キュー ファイルのサイズは、ファイル スペースが使用されていない一定期間が経過するまで縮小されません。

キューでディスクがいっぱいになったときに、これを行う必要があったことを覚えています。メッセージを処理するのではなく、同時にキューをクリアしてディスク領域を解放しました。

于 2011-12-02T15:55:51.073 に答える