2012-10-22 96 views
0

我在我的項目中使用activeMQ 5.4進行JMS實現。 我想通知用戶每次應用程序未能發送消息 但我沒有得到任何異常發生的句柄。例如,如果JMS代理已關閉,並且我在一個try塊內執行創建連接,會話等或消息發送操作,則控制將永遠不會回到爲連接設置的catch塊或ExceptionListener。 我的代碼如下所示:處理JMS操作中的異常

connection = (TopicConnection) (new ActiveMQConnectionFactory(localBrokerURL)).createConnection(); 
connection.setExceptionListener(new ExceptionListener() {    
    @Override 
    public void onException(JMSException arg0) { 
     System.out.println("Exception Occurred"); 
    } 
}); 
connection.start(); 
final TopicSession session =conn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); 
final Topic sendTopic = session.createTopic("someTopicName"); 

其中localBrokerURL的價值是

failover://(ssl://localhost:61618?trace=true&wireFormat.maxInactivityDuration=0) 

請幫助。任何暗示高度讚賞。

回答

3

這是故障轉移的意圖:傳輸。它會隱藏傳輸失敗並自動嘗試重新連接,並在建立新連接時重播任何jms狀態。 有一個transportListener,您可以使用它來獲取傳輸暫停和恢復事件。 如果從代理網址中刪除故障轉移組件,則會將所有異常傳播到客戶端。