2012-10-22 61 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,您可以使用它来获取传输暂停和恢复事件。 如果从代理网址中删除故障转移组件,则会将所有异常传播到客户端。