【问题标题】:how to handle connection failure in case of activeMq tcp failover在activeMq tcp故障转移的情况下如何处理连接失败
【发布时间】:2017-04-25 18:07:51
【问题描述】:

我正在使用 activeMQ tcp 故障转移连接并创建消费者并订阅生产者生成的主题。 现在如何管理网络故障?如果代理和客户端之间的连接断开,我如何知道何时再次建立连接? 另外,我如何知道生产者是否启动并运行?生产者重启的情况下;我怎么知道它,以便我可以重新订阅主题?

【问题讨论】:

    标签: java activemq


    【解决方案1】:

    使用 FailoverTransport,您不必管理重新连接,除非您指定 maxReconnectAttempts,否则他会尝试无限重新连接

    如果生产者重启,重新订阅主题??不需要,因为您的消费者已连接,他不必关心生产者

    即使不需要,也会收到有关 FailoverTransport 状态更改的通知:

        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(tcp://host1:5670)");
        cf.setTransportListener(new TransportListener() {
            @Override
            public void transportResumed() {
            }
    
            @Override
            public void transportInterupted() {
            }
    
            @Override
            public void onException(IOException error) {
            }
    
            @Override
            public void onCommand(Object command) {
            }
        });
    

    【讨论】:

    • 我试过这个;我的观察是,如果我从我的机器(消费者/订户)中拔出 n/w 电缆,在 15 秒后,transportInterupped,之后即使我连接 n/w 电缆也没有任何反应。 (我没有收到我订阅的主题的任何新更新)。主题没有持久化。
    • 当然,如果您使用没有持久订阅的主题。您必须创建持久订阅或使用追溯消费者activemq.apache.org/retroactive-consumer.html
    • 我使用的是追溯消费者,但不是持久订阅。我也应该使用持久订阅吗?这会解决我的消费者连接回 n/w 后无法获得更多更新的问题吗?
    • 一般追溯消费者就够了,能不能用消费者代码和activemq.xml更新你的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 2014-04-27
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多