【问题标题】:ActiveMQConnectionFactory sendTimeoutActiveMQConnectionFactory 发送超时
【发布时间】:2013-02-25 06:35:26
【问题描述】:

根据 ActiveMQ 站点上的this config pageconnection.sendTimeout 属性为:

Message Sends 等待 Response 的时间,默认值 0 表示永远等待。如果代理是快速生产者或没有消费者,则永远等待允许代理对来自此客户端的消息进行流控制,这样如果代理没有减慢生产者的速度,代理就会耗尽内存.不影响 Stomp 客户端,因为发送由代理确认。 (从 ActiveMQ-CPP 2.2.1 开始)

我很难解释这意味着什么(以及sendTimeout 属性的真正含义/作用):

  • 什么是“消息发送”对象?
  • 为什么 ActiveMQ 会等待响应?它不是在 JMS 连接的服务器端吗?它不应该在等待请求吗?
  • 实际超时是多少?什么时候使用?

提前致谢!

【问题讨论】:

    标签: java configuration activemq activemq-cpp


    【解决方案1】:

    超时影响客户端向代理发送消息。在发送不是异步的情况下,客户端等待代理返回响应,指示消息已被接收并添加到消息存储中。在某些情况下,如果由于已达到其预设内存限制之一,Broker 已启用生产者流控制,这可能会阻塞很长时间。如果客户端应用程序不能容忍长时间等待发送,它可以配置此超时,以便 MessageProducer::send 不会无限期地阻塞。

    消息以同步模式发送,因为 Connection 配置为 alwaysSyncSend=true,或者因为 MessageProducer 在发送模式设置为 Persistent 的情况下发送。

    一般来说,如果您为代理配置了与您的用例相匹配的限制,则不需要使用此设置。

    【讨论】:

    • 感谢@Time Bish (+1) - 快速跟进:如果 Apache Camel 是此等式中的客户端,我如何判断我是否无意中将其设置为“同步模式”?换句话说,我如何判断ActiveMQConnectionFactory#isAlwaysSyncSend 是否为真,或者MessageProducer 是否为Persistent?再次感谢!
    • 这确实是一个关于不同编程语言的不同主题的不同问题,可能值得创建一个新主题。
    猜你喜欢
    • 2013-07-21
    • 2012-08-16
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2019-05-31
    • 2015-04-19
    • 1970-01-01
    相关资源
    最近更新 更多