【发布时间】:2014-04-16 21:16:02
【问题描述】:
我正在编写一个 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)。所以,我的问题是:
我应该如何在侦听器中捕获这些类型的问题,以便我可以编写一些程序以从错误中恢复或至少终止进程?
谢谢!
【问题讨论】: