根据ActiveMQ网站上的this config page,connection.sendTimeout
属性为:
消息发送等待响应的时间,默认值为零表示永远等待。等待永远允许代理对来自此客户端的消息进行流量控制(如果它是快速生产者)或没有消费者,如果它没有减慢生产者的速度,则代理会耗尽内存。不会影响Stomp客户端,因为代理会发送发送消息。 (自ActiveMQ-CPP 2.2.1起)
我难以解释这意味着什么(以及sendTimeout
属性到底是什么/它做了什么):
提前致谢!
答案 0 :(得分:2)
超时会影响客户端向Broker发送消息。在发送不是异步的情况下,客户端等待Broker返回指示消息已被接收并添加到消息存储的响应。在某些情况下,如果经纪人已经参与了生产者流量控制,这可能会长时间阻塞,因为已达到其预设的内存限制之一。如果客户端应用程序无法容忍长时间等待发送,则可以配置此超时,以便MessageProducer :: send不会无限期阻塞。
消息以同步模式发送,因为Connection配置了alwaysSyncSend = true,或者因为MessageProducer正在发送并将传送模式设置为Persistent。
通常,如果您为Broker配置了与您的用例匹配的限制,则不需要使用此设置。