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