2011-06-25 10 views
7

キューからメッセージを処理する簡単なプログラムがあります。 私は、利用可能なすべてのメッセージをキューに入れて処理し、依然として受信メッセージのキューを待ちます。MQRC2033を回避する方法NO_MSG_AVAILABLE

キューを常に待ち受け、メッセージを処理したいので、処理部分を無限ループ内に記述しました。一旦

再びすべてのメッセージを処理した後、それは(それが無限ループ内にあるように)キューからメッセージを取得しようとそこ

は、MQRC 2033 NO_MSG_AVAILABLE例外をスローしないメッセージではない(Infactは、それが正確である)および私のプログラムは終了する。

このキューを継続的にリッスンし、この例外を回避するアイディアを誰かに与えることはできますか。

答えて

5

MQGET API呼び出しを実行すると、プログラムがメッセージを待つオプションがあります。待機時間(ミリ秒単位)を指定するか、永遠に待機するように指定できます。アプリが数秒以上待っている場合は、「失敗した場合は失敗する」と指定してください。これにより、キュー・マネージャーをきれいに停止させることができます。 「失敗した場合は失敗」せずに管理者が問題を引き起こす可能性のあるプリエンプティブシャットダウンを発行する必要があります。

特に、この質問のセクションは、「プログラマーズガイド」のWaiting for Messagesの章にあります。書き込む言語によっては、Programmer's ReferenceUsing JavaマニュアルまたはUsing .Netマニュアルに指定する実際の値があります。上記のリンクをクリックすると、ナビゲーションパネルに表示されます。

+0

ありがとうございます。私のgetオプションでMQWI_UNLIMITEDを指定しました。期待どおりに動作しました。本当にありがとうございます。 – Vignesh

関連する問題