次のコード ブロックを使用して、JMS メッセージをキューにポストし、応答キューで応答メッセージを取得しています。(次のコードは、スレッドごとに 20 個のバッチで 100 個のメッセージに対して実行され、5 つのスレッドが同時に実行されます)
for(int i=0;i<=20;i++)
{
msg=myMessages.get(i); // myMessages is an array of TextMessages
qsender = qsession.createSender((Queue)msg.getJMSDestination());
qreceiver=qsession.createReceiver((Queue)msg.getJMSDestination());
tempq = qsession.createTemporaryQueue();
responseConsumer = qsession.createConsumer(tempq);
msg.setJMSReplyTo(tempq);
responseConsumer.setMessageListener(new Listener());
msg.setJMSCorrelationID(msg.getJMSCorrelationID()+i);
qsender.send(msg);
}
リスナーの実装:
public class Listener
implements MessageListener
{
public void onMessage(Message msg)
{
TextMessage tm = (TextMessage) msg;
// to calculate the response time
}
}
要件は、各メッセージにかかる応答時間を取得して保存することです。どうすればいいですか?メッセージのプロパティで時刻/日付を設定し、相関 ID を使用してリスナーで時刻を計算することを考えています。
それについて別の方法はありますか?