2014-04-16 7 views
1

ActiveMq 5.9 MessageListener를 프로그래밍 중입니다. 브로커에서 메시지를 제대로 가져올 수 있지만 예외는 예외 상황을 처리하는 방법에 관한 것입니다.MessageListener 안에 던져지는 ActiveMQ 쓰레드 예외를 잡는 방법

2014-04-16 17:38:50,559 DEBUG [ActiveMQ Transport: tcp://localhost/127.0.0.1:[email protected]] 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) 

문제는 내가 (내가 잡으려고 시도 때도 예외를 잡을 수 아니라고이다 청취자가 여전히 동안의 ActiveMQ 브로커가 종료 된 예를 들어 는, 리스너는 다음 로그를 인쇄 Throwable)를 처리의 주된 방법으로 사용합니다. 그래서, 제 질문은 :

청중에서 이러한 종류의 문제를 잡아서 오류를 복구하거나 최소한 프로세스를 종료하도록 프로그래밍 할 수있는 방법은 무엇입니까?

감사합니다.

답변

2

그게 바로 ExceptionListener입니다. Connection 인스턴스에 ExceptionListener를 설정할 수 있으며 이와 같이 대역 외 오류가 발생하면 알림을받습니다.