5

ActiveMQ サブジェクトにストックされたすべてのメッセージを取得するための単純なコンシューマー プログラム (Java) を作成したいと考えています。キューに TextMessage を送信するプロデューサーがあります。

しかし、古いメッセージを取得して新しいメッセージを待つためにコンシューマを書き始める方法がわかりません。

例があれば、ありがとう!

これは私のプロデューサーです: http://pastebin.com/uRy9D8mY

これは私の消費者です: http://pastebin.com/bZh4r66e

コンシューマーの前にプロデューサーを実行してからコンシューマーを実行すると、何も得られません。コンシューマを実行してからプロデューサを実行すると、キューに 72 個のメッセージが追加されますが、コンシューマは 24 個のメッセージしか取得できません...

4

2 に答える 2

5

このチュートリアルを読むことをお勧めします (Apache ActiveMQ と同様) SUN Jms チュートリアル

Spring などのさまざまなフレームワークを使用したり、プレーンな Java を使用したりして、JMS/ActiveMQ プログラムを作成する方法は多数あります。

基本的に、リスナー クラスは次のように記述します。

public class MyListener implements MessageListener{
   public void onMessage(Message message){
      // Read and handle message here.
   }
}

すでにメッセージを生成しているので、接続が稼働していると思います。

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
consumer = session.createConsumer("MyQueue");
listener = new MyListener ();
consumer.setMessageListener(listener);
connection.start(); 
// At this point, messages should arrive from the queue to your listener.

次に、この例には含まれていないエラー処理コードがいくつかありますが、チュートリアルと JMS ドキュメントの助けを借りて理解できるはずです。

于 2012-05-29T08:11:55.850 に答える