java – ActiveMQ createSession超时

从ActiveMQ连接创建会话对象时是否有任何设置超时的方法?

我正在使用的代码如下所示:

ConnectionFactory factory = Settings.getJmsConnectionFactory(ip);
connection = factory.createConnection();
// insert timeout here
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(Settings.Topic);
MessageConsumer consumer = session.createConsumer(topic);
consumer.setMessageListener(this);
connection.start();

只要消息服务器已经启动,这就可以正常工作.否则createSession调用将阻止.我可以在另一个线程上执行它以避免应用程序阻塞,但我想我会要求找出是否有一种“更清洁”的方式.

干杯,
马克斯

最佳答案 你确定它在createSession()调用吗?如果服务器不可用,则它应该在createConnection()上失败.如果您没有运行服务器,并且您正在使用
failover transport,它将尝试使用默认设置永久重新连接.查看故障转移传输的传输选项,了解如何解决它.

点赞