ActiveMQ createSession超时

时间:2011-07-27 01:24:25

标签: java session connection activemq

从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调用将阻止。我可以在另一个线程上执行它以避免应用程序阻塞,但我想我会要求找出是否有一种“更清洁”的方法。

干杯, 最大

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

正如 lcrepas 在他的评论中指出的那样,这应该是正确的答案:

将 transport.startupMaxReconnectAttempts=1 添加到您的连接字符串中。

如果这对您有帮助,请为 lcrepas 的评论点赞。