【问题标题】:What is the best connection URI for ActiveMQ if I want to Fail Fast?如果我想快速失败,ActiveMQ 的最佳连接 URI 是什么?
【发布时间】:2011-06-28 00:59:02
【问题描述】:

我在 Java 中使用 ActiveMQ 来记录传入的分析信标。理想情况下,如果队列出现故障或被锁定,我希望尽快失败,在本地记录信标,然后返回客户端而不挂起,然后尝试稍后重新连接。

在使用 ActiveMQ 时,该用例的最佳连接 URI 和 URI 参数是什么?

【问题讨论】:

    标签: java message-queue activemq


    【解决方案1】:

    我建议针对您的情况使用 AMQ 的故障转移传输。例如:试试这种形式的 URL(在 AMQ 5.3 及以上版本中可用):

    failover:(tcp://jms.host1:61616,tcp://jms.host2:61616,tcp://jms.host3:61616)?timeout=5000
    

    这只是意味着尝试连接在 jms.host1、jms.host2、jms.host3 上运行的 JMS 代理 5 秒,如果没有可用的连接,则向客户端返回错误。如果您的客户端失去与 jms.host2 的连接,它还将负责自动故障转移以连接到 jms.host1 或 jms.host3。

    查看此页面以获取有关故障转移传输的文档:http://activemq.apache.org/failover-transport-reference.html

    【讨论】:

    • 不幸的是,如果传输中断,URI 是一个阻塞调用。它不会很快失败,它只是无限期地阻塞。
    • 您是否注意到该 URL 中的“timeout=5000”?如果未建立连接,这将导致发送调用在 5 秒后完全失败。连接不会被终止,因此您可以稍后尝试使用相同的连接发送消息。请检查我上面提供的链接。
    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2020-09-26
    • 2014-11-02
    • 2011-05-27
    相关资源
    最近更新 更多