【问题标题】:How to catch ActiveMQ threads exceptions that are thrown inside a MessageListener如何捕获在 MessageListener 中引发的 ActiveMQ 线程异常
【发布时间】: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)。所以,我的问题是:

我应该如何在侦听器中捕获这些类型的问题,以便我可以编写一些程序以从错误中恢复或至少终止进程?

谢谢!

【问题讨论】:

    标签: activemq message-listener


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 2011-09-26
      • 2010-12-27
      相关资源
      最近更新 更多