我有一个简单的代码将 2 条消息放入队列中。
1)我用两台服务器设置了connectionNameList。
2)这两个服务器是独立的,但具有相同的队列管理器和定义相同名称的队列,例如“QMgr”和“TEST.IN”
3)我设置了setClientReconnectOptions(WMQConstants.WMQ_CLIENT_RECONNECT);
我希望当第一台服务器关闭时,它应该将消息发送到第二台服务器。
我做的测试:
a) 我发送第一条消息,sender.send(message); 有效。
b) 睡眠 30 秒。
在此期间,我关闭了第一台服务器
c) 然后睡眠完成,尝试发送第二条消息,但未能立即发送
此外,我尝试了更多,我为第二条消息尝试了{} catch{},并且在 catch{} 中,我尝试了 sender.send(message),它仍然失败。
知道为什么它与我的预期不同。我将非常感谢您的回复。
public static void main(String[] args) throws Exception
{
MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
cf.setConnectionNameList("10.230.34.191(1418),10.230.34.169(1418)");
cf.setQueueManager("QMgr");
cf.setTransportType(WMQConstants.WMQ_CM_CLIENT);
cf.setClientReconnectOptions(WMQConstants.WMQ_CLIENT_RECONNECT);
cf.setClientReconnectTimeout(600);
System.out.println("connect list " + cf.getConnectionNameList());
MQQueueConnection connection = (MQQueueConnection) cf
.createQueueConnection("mqm", "passwd");
MQQueueSession session = (MQQueueSession) connection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
MQQueue queue = (MQQueue) session.createQueue("queue:///TEST.IN");
MQQueueSender sender = (MQQueueSender) session.createSender(queue);
long uniqueNumber = System.currentTimeMillis() % 1000;
JMSTextMessage message = (JMSTextMessage) session.createTextMessage("SimplePTP "
+ uniqueNumber);
// Start the connection
connection.start();
sender.send(message);
System.out.println("Sent message:\\n" + message);
System.out.println("sleep 30 seconds");
Thread.sleep(30000);
uniqueNumber = System.currentTimeMillis() % 1000;
message = (JMSTextMessage) session.createTextMessage("SimplePTP " + uniqueNumber);
sender.send(message);
sender.close();
session.close();
connection.close();
System.out.println("\\nSUCCESS\\n");
}