【问题标题】:Blocking producers in active mq在 activemq 中阻塞生产者
【发布时间】:2017-09-14 04:37:15
【问题描述】:

最近我们遇到了一些关于 activemq 的问题。生产者能够连接到代理,但是当我们发送消息时,生产者线程被阻塞。客户端/生产者既不会超时也不会抛出异常。我想知道我们是否可以在故​​障转移配置中添加任何参数failover:(tcp://localhost:61616,tcp://srv01.abc.com:61616),这样如果主客户端超时,消息可以重定向到故障转移 mq 代理。如果有人能在这方面帮助我,那就太好了。

【问题讨论】:

    标签: timeout activemq


    【解决方案1】:

    所以对于故障转移传输:

    maxReconnectAttempts: 默认值 = -1 | 0

    来自 ActiveMQ 5.6:默认为 -1,永远重试。 0 表示禁用重新连接,例如:尝试连接一次。 ActiveMQ 5.6 之前:默认为 0,永远重试。全部 ActiveMQ 版本:>0 表示最大重新连接数 在错误被发送回客户端之前尝试。

    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("failover:(tcp://localhost:61616,tcp://srv01.abc.com:61616)?randomize=false&maxReconnectAttempts=Value&trackMessages=true")
    

    可以在 url 中设置所有故障转移传输选项

    http://activemq.apache.org/failover-transport-reference.html

    【讨论】:

    • 感谢哈森的快速回答。想知道我们是否还需要设置 maxReconnectDelay,如果主节点上的重新连接尝试用尽,属性 maxReconnectAttempts 是否负责将请求重定向到故障转移节点?
    • maxReconnectAttempts 是所有故障转移 url 的最大值,FailoverTransport 会自动尝试一个接一个地连接到 url,如果无法成功连接到一个 url,他会尝试下一个,整个过程等于“尝试” 1 of maxReconnectAttempts
    • FailoverTransport 始终负责在节点上的尝试失败时将请求重定向到故障转移节点
    • 当然。会检查并让你知道。
    • 您可能还需要定义connection.sendTimeout,以便在这些秒后连接超时,否则不会因为默认值为0,这意味着永远不会超时,如果您不超时,那么maxReconnectAttempts 不会'没用。
    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    相关资源
    最近更新 更多