gpt4 book ai didi

java - 未收到 Websphere MQ 临时队列上的回复

转载 作者:太空宇宙 更新时间:2023-11-04 14:54:47 24 4
gpt4 key购买 nike

我正在使用 Websphere MQ 系统的发送/接收机制。

我以文本格式发送的 xml 应该会收到回复,但我没有收到回复。

我知道 xml 正在“发送”,因为目标系统中“正在发生事情” - 只是我没有收到回复。该回复对我来说很重要,因为如果出现问题,它可能会包含错误消息。

所以,我没有收到回复的原因是 - 我不确定我的代码或 Websphere MQ 配置是否有问题。

任何有关我的代码或我应该要求 Websphere MQ 管理员查看的内容的指示都非常感谢!!

一个小型的独立示例来演示接收未发生,如下所示:

public class CustomQueueConnection {
private MQQueueConnectionFactory connectionFactory;
private MQQueueConnection connection;

private void runTest() throws JMSException {
connect();
MQQueueSession session = (MQQueueSession) connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
MQQueue queue = (MQQueue) session.createQueue("queue:///REQ_SNAPSHOT.HT");
MQQueueSender sender = (MQQueueSender) session.createSender(queue);
TemporaryQueue temporaryQueue = session.createTemporaryQueue();
MQQueueReceiver receiver = (MQQueueReceiver) session.createReceiver(temporaryQueue);

TextMessage message = session.createTextMessage(
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
// my well constructed xml goes here...
);

message.setJMSReplyTo(temporaryQueue);
sender.send(message);
System.out.println("Sent: " + message);
JMSMessage receivedMessage = (JMSMessage) receiver.receive(10000);
System.out.println("Received: " + receivedMessage);
}

public boolean connect() {
boolean connected = false;
try {
connectionFactory = new MQQueueConnectionFactory();
connectionFactory.setCCSID(819);
connectionFactory.setPort(1417);
connectionFactory.setHostName("1.2.3.4");
connectionFactory.setQueueManager("GATE1");
connectionFactory.setChannel("CLIENTS.CHANNEL");
connectionFactory.setTemporaryModel("GATEWAY_MODEL_QUEUE");
connectionFactory.setTempQPrefix("MACHINE.USER_NAME.*");
connectionFactory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);

connection = (MQQueueConnection) connectionFactory.createQueueConnection();
connected = true;
} catch (JMSException e) {
connected = false;
}
return connected;
}

public static void main(String[] args) throws JMSException {
new CustomQueueConnection().runTest();
}

}

这是输出:

Sent:
JMS Message class: jms_text
JMSType: null
JMSDeliveryMode: 2
JMSExpiration: 0
JMSPriority: 4
JMSMessageID: ID:414d512050314f47415445312020202053599032201b4d05
JMSTimestamp: 1398680728618
JMSCorrelationID:null
JMSDestination: queue:///REQ_SNAPSHOT.HT
JMSReplyTo: queue://GATE1/MACHINE.USER_NAME.53599032201B4E04?persistence=1
JMSRedelivered: false
JMS_IBM_PutDate:20140428
JMSXAppID:WebSphere MQ Client for Java
JMS_IBM_PutApplType:28
JMSXUserID:aomis
JMS_IBM_PutTime:10252859
JMSXDeliveryCount:0
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<esb:esbMessage xmlns:esb="http://ESBServices
Another 557 character(s) omitted
Received: null

(注意:已收到:空)

编辑:Websphere MQ 版本为 6.0.25

最佳答案

你的代码对我来说看起来没问题,消息发送成功。我想让你检查一下:

1) 是否有正在运行的应用程序从 REQ_SNAPSHOT.HT 队列接收消息?

2) 假设有一个应用程序正在运行并接收消息,该应用程序是否已成功处理传入的 XML 消息?它抛出任何异常吗?

3) 如果传入消息处理成功,是否已将回复放入正确的回复队列“MACHINE.USER_NAME.53599032201B4E04”?检查在回复消息时是否遇到任何问题。

关于java - 未收到 Websphere MQ 临时队列上的回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com