0

次のコード ブロックは、一連の JMS メッセージを EMS サーバーにポストするために使用されます。

            for(int i=1;i<=200;i++)
            {

                msg=myMessages.get(i); // myMessages is an Arraylist of TextMessages
                qsender = qsession.createSender((Queue)msg.getJMSDestination());
                qreceiver=qsession.createReceiver((Queue)msg.getJMSDestination());
                temp1 = qsession.createTemporaryQueue();
                responseConsumer = qsession.createConsumer(temp1);
                msg.setJMSReplyTo(temp1);
                msg.setJMSCorrelationID(msg.getJMSCorrelationID()+i);
                qsender.send(msg);

            }

これは私が開発したものではないので、いくつか質問があります。

  1. クエリは実際に何をしますか? 返信なしでメッセージを投稿するだけですか?
  2. はいの場合、応答がいつ戻ってくるかをどのように知り、かかった時間をどのように計算しますか?
  3. また、メッセージがそこに到達するまでの合計時間と、応答が戻ってくるまでの合計時間はどのように計算すればよいでしょうか?

さらに情報が必要な場合はお知らせください。

4

2 に答える 2

0

あなたの質問に答えるには:

  1. はい、メッセージのみを投稿します。

  2. MessageListenerメソッドが呼び出されるたびに、新しいメッセージを処理するonMessage()準備が整います。

  3. 3 番目の質問への回答は少し複雑ですが、メッセージが投稿された時間と、応答が受信された時間 (correlationId に基づいて、何らかの永続ストレージに記録または書き込みを行うことができます) が必要になる場合があります。各メッセージの経過時間を知る);

よろしく、

Y.

于 2012-08-13T11:04:39.270 に答える
0

返信なしでメッセージを投稿するだけですか?

はい。また、メッセージを送信する送信者と、使用していないように見える受信者も作成します。

はいの場合、応答がいつ戻ってくるかをどのように知り、かかった時間をどのように計算しますか?

一時キューとその受信者を作成します。相手側が「JMSReplyTo」に格納されているキュー名にメッセージを送信することを期待しています

また、メッセージがそこに到達するまでの合計時間と、応答が戻ってくるまでの合計時間はどのように計算すればよいでしょうか?

コンシューマーに時刻を取得させ、最初のメッセージが送信された時刻と一致させることができます。

IMHO より簡単な方法は、送信された時間をプロパティとして追加し、サービスにこれを返させることです。このようにして、戻ってくるメッセージに必要なすべての情報が含まれます。

于 2012-08-13T10:56:30.320 に答える