我正在使用以下代码块将 JMS 消息发布到队列,并在响应队列中获取响应消息。(以下代码运行 100 条消息,每线程 20 条,同时运行 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
}
}
要求是获取每条消息的响应时间并将其存储。我该怎么做?考虑在消息的属性中设置时间/日期,然后使用 Correlation id 计算 Listener 中的时间。
还有其他方法吗?