1
我正在使用以下代码块将JMS消息发送到队列,并在响应队列中获取响应消息。 (下面的代码运行在批次20每个线程的100条消息,五个线程同时运行)使用MessageListener接口获取JMS请求的响应时间
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中的时间。
还有另外一种方法可以解决吗?
在onMessage将在当消息到达接收器这种情况下被称为?或者当响应回到临时队列时? – Chillax 2012-08-16 06:58:27
它的连接方式与您的问题相同。当响应返回到临时队列中时,将调用'onMessage(Message)'。 – Dev 2012-08-16 15:44:49
这里我只是设置响应消息的侦听器,我所做的就是将消息发送到队列。但Receiver应该从Queue接收此消息吗?什么时候发生。对不起,我的无知。在整个流程中有点混乱。 – Chillax 2012-08-22 13:08:33