1
我試圖創建一個通信類,它將向MQ發送請求並從中獲取響應。基於JMS消息選擇器的MessageConsumer.recieve正在等待對象
以下是我寫的代碼。
TextMessage inputMsg = session.createTextMessage(message);
inputMsg.setJMSReplyTo(responseQueue);
try {
connection.start();
sender.send(inputMsg);
messageId = inputMsg.getJMSMessageID();
reciever = session.createConsumer(responseQueue,"JMSMessageID = '"+messageId+"'");
Message mess=reciever.receive(10000);
TextMessage outputMsg = (TextMessage) mess;
if(outputMsg == null)
logger.error(" Error while recieving the message");
else
replyMsg= outputMsg.getText();
此代碼給我下面的對象等待代碼執行。
java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:167)
at com.ibm.mq.jmqi.remote.internal.system.RemoteProxyQueue.proxyMQGET(RemoteProxyQueue.java:2667)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiGetMessageWithRecon(RemoteFAP.java:6219)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiGetMessage(RemoteFAP.java:6112)
at com.ibm.mq.jmqi.internal.JmqiTools.getMessage(JmqiTools.java:1090)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiGet(RemoteFAP.java:6080)
at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1305)
at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receiveInternal(WMQSyncConsumerShadow.java:239)
at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.receive(WMQConsumerShadow.java:1058)
at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.receive(WMQMessageConsumer.java:469)
at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveInboundMessage(JmsMessageConsumerImpl.java:879)
at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive(JmsMessageConsumerImpl.java:431)
at com.ibm.mq.jms.MQMessageConsumer.receive(MQMessageConsumer.java:228)
但是,如果我改變createConsumer線,
reciever = session.createConsumer(responseQueue,"JMSMessageID = '"+messageId+"'");
問題與上面的線是我的響應消息中的併發請求而導致會話混淆越來越混淆。
有人請指導我如何解決這個問題?
在此先感謝。