2011-07-05 102 views
1

我正在使用JMS与ActiveMQ交谈。我必须禁用ActiveMQ的故障转移,因为我需要自己处理它。JMS和ActiveMQ,如何在断开连接时接收通知?

因此,而不是使用:故障转移// tcp //本地主机:61616我使用:tcp // localhost:61616。

如果我关闭ActiveMQ服务器并尝试发送消息,我会收到一个异常。 javax.jms.IllegalStateException:会话关闭

但是如何在与服务器的连接丢失时立即通知我?

原因是,我没有使用ActiveMQ的故障转移,这是因为在生产中它应该是MQSeries。

感谢

回答

2

我不知道,但TransportListener可以帮助你。

下面是使用它的一个样本,

connection = new ActiveMQConnectionFactory(brokerUrl).createConnection(); 
ActiveMQConnection cc = (ActiveMQConnection)connection; 
cc.addTransportListener(new YourTransportListener()); 

希望这可以帮助你。

+1

感谢您的回答。我不能使用它,因为它不是普通的JMS。我发现,我可以添加connection.setExceptionListener(新的ExceptionListener(){ \t \t \t \t \t \t \t \t @覆盖 \t \t \t \t公共无效onException的(ē的JMSException){ \t \t \t \t \t // TODO自动 - 生成方法存根 \t \t \t \t \t System.out.println(e); \t \t \t \t} \t \t \t});为JMSConnection。我在客户端尝试推送某些东西时通知我:javax.jms.JMSException:java.io.EOFException但我想我无法获得更有意义的东西。 –

+1

看起来我可以在ExceptionListener中收到异常时重新连接。我会去那。谢谢你的帮助 –

相关问题