ActiveMQConnectionFactory sendTimeout

时间:2013-03-09 20:35:53

标签: java configuration activemq activemq-cpp

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

  

消息发送等待响应的时间,默认值为零表示永远等待。等待永远允许代理对来自此客户端的消息进行流量控制(如果它是快速生产者)或没有消费者,如果它没有减慢生产者的速度,则代理会耗尽内存。不会影响Stomp客户端,因为代理会发送发送消息。 (自ActiveMQ-CPP 2.2.1起)

我难以解释这意味着什么(以及sendTimeout属性到底是什么/它做了什么):

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

消息以同步模式发送,因为Connection配置了alwaysSyncSend = true,或者因为MessageProducer正在发送并将传送模式设置为Persistent。

通常,如果您为Broker配置了与您的用例匹配的限制,则不需要使用此设置。