【发布时间】:2016-04-08 01:27:24
【问题描述】:
我有以下代码来发送请求和接收来自 IBM MQ 的响应。我知道代码是特定于 IBM 实现的,但我正在尝试获得一些结果。稍后我将对代码进行更改以使其更通用。
MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
cf.setHostName("xx.xxx.xx.xxx");
cf.setPort(xxxx);
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
cf.setQueueManager("Q_MANAGER");
cf.setChannel("CHANNEL");
MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection();
MQQueueSession session = (MQQueueSession) connection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
MQQueue queue = (MQQueue) session.createQueue("queue:///REQ_Q");
MQQueue respQueue = (MQQueue) session.createQueue("queue:///RESP_Q");
MQQueueSender sender = (MQQueueSender) session.createSender(queue);
// set message properties
TextMessage message = (TextMessage) session.createTextMessage("message to send");
message.setJMSReplyTo(respQueue);
// Start the connection
connection.start();
sender.send(message);
session.commit();
String selecter = "JMSCorrelationID = '"+message.getJMSCorrelationID()+"'";
MQQueueReceiver receiver = (MQQueueReceiver)session.createReceiver(respQueue, selecter);
Message messageText;
messageText = receiver.receive(5000);
消息发送成功。但是我得到 null 作为响应,实际上应该有一些响应。我错过了什么?
【问题讨论】:
-
您采取了哪些步骤来确认响应队列中有消息并且可以使用该消息?您已经开始了连接,这是通常被遗忘的事情。!响应是否被置于未提交的事务下?
标签: java jms message-queue ibm-mq