如何捕获MessageListener中抛出的ActiveMQ线程异常

如何捕获MessageListener中抛出的ActiveMQ线程异常,activemq,message-listener,Activemq,Message Listener,我正在编写一个ActiveMq 5.9 MessageListener。我能够正确地从代理获取消息,但我关心的是如何处理异常情况。 例如,当ActiveMq代理在侦听器仍处于运行状态时关闭时,侦听器将打印以下日志: 2014-04-16 17:38:50,559 DEBUG [ActiveMQ Transport: tcp://localhost/127.0.0.1:61616@55509] ActiveMQConnection - Async exception with no excep

我正在编写一个ActiveMq 5.9 MessageListener。我能够正确地从代理获取消息,但我关心的是如何处理异常情况。 例如,当ActiveMq代理在侦听器仍处于运行状态时关闭时,侦听器将打印以下日志:

2014-04-16 17:38:50,559 DEBUG [ActiveMQ Transport: tcp://localhost/127.0.0.1:61616@55509] ActiveMQConnection - Async exception with no   exception listener: java.io.EOFException
java.io.EOFException
   at java.io.DataInputStream.readInt(DataInputStream.java:392)
   at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:275)
   at   org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221)
at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
at java.lang.Thread.run(Thread.java:744) 
问题是我无法捕获异常,即使我试图在进程的主方法中捕获(Throwable)。所以,我的问题是:

我应该如何在侦听器中捕获此类问题,以便编写程序从错误中恢复,或者至少终止进程


谢谢

这就是ExceptionListener的作用。您可以在您的连接实例上设置ExceptionListener,然后当发生类似这样的带外故障时,您将收到通知