2011-11-15 19 views
2

私はIBM WebSphere MQの初心者です。以下のタスクを解決するための最良の方法についてお聞きしたいと思います。着信メッセージのIBM WebSphere MQ 7.0キューを確認する最善の方法

私はWebSphere MQ 7.0を使用しています。着信メッセージのMQキューをチェックするJavaアプリケーションを実装しました。次のコードを経由して開かれた

受信キューは:

int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE; 
MQQueue incomingQueue = 
      qManager.accessQueue(qName, openOptions, null, null, null); 

さて、タスクは、新しいメッセージがincomingQueueに表示され、それらを処理するときにリアルタイムモードで確認することです。

whileループでincomingQueue.getCurrentDepth()の呼び出しでキューの深さを永久にチェックし、ゼロより大きいかどうかを確認してから新しいメッセージを取得します。

それは機能しますが、私はそれが良いアプローチではないと信じています。

新しい着信メッセージがMQキューに出現したときに通知する最良の方法は何ですか?

ありがとうございます。

答えて

2

ただ、queue.Get(msg)メソッドを呼び出します。これはブロッキング呼び出しであり、キューにメッセージがある場合にのみ返されます。

ブロッキングコールとして上記が適切でない場合は、メッセージリスナーを提供するWMQ JMSを参照できます。メッセージリスナは、コールバックメソッドでメッセージを受信するために使用され、メインスレッドは引き続き他の作業を実行できます。

MQに付属するサンプルがあります。これらは、(Windowsの場合)¥tools¥jms¥samplesおよびtools¥wmqjava¥samplesの下にあります。

+0

ありがとう、シャーシ。 –