Jms 如果目标关闭,如何可靠地发送IBM MQ消息?
我必须向IBM队列发送消息。我已经编写了一个普通的producer类来将消息推送到队列,如下所示:-Jms 如果目标关闭,如何可靠地发送IBM MQ消息?,jms,ibm-mq,Jms,Ibm Mq,我必须向IBM队列发送消息。我已经编写了一个普通的producer类来将消息推送到队列,如下所示:- Session session = queueConnection.createSession(true, QueueSession.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("test.queue"); Mess
Session session = queueConnection.createSession(true,
QueueSession.AUTO_ACKNOWLEDGE);
Destination destination =
session.createQueue("test.queue");
MessageProducer producer = session.createProducer(destination);
TextMessage message = session.createTextMessage("test");
producer.send(message);
// Close the session
session.close();
现在,假设由于某种原因,QueueManager中存在的队列已关闭,或者IBM MQ broker已关闭,或者存在导致发送消息失败的网络问题
JMS/IBM MQ中是否有一种机制可以自动重试以发送消息?基本上是重试机制,并在最终放弃将消息发送到IBM MQ broker之前重试定义的次数 IBM MQ JMS客户端其他IBM MQ客户端也有一项功能,其中,如果IBM MQ队列管理器的连接因任何原因中断,客户端将尝试重新连接到队列管理器,直到指定的时间。请参见此处:。您需要配置连接工厂以启用重新连接 例如,如果在执行producer.send方法时与队列管理器的连接中断,IBM MQ JMS客户端将自动尝试重新连接到队列管理器并发送消息
在IBM MQ中,队列不能下降,但可以进入可访问状态,例如,如果队列已满或put/get on queue已禁用等。感谢您指向链接。但我的用例是应用程序将在TOMEE容器中运行。如果由于某种原因队列不可用,应用程序是否在TOMEE内部运行?是否能够使用setClientReconnectOptions自动重新连接?是的,如果启用了重新连接选项且连接中断,MQ JMS客户端将尝试重新连接。