我在我们的 stomp.py 7.0 客户端(仅限侦听器)中看到了行为,在一段时间未接收消息的空闲时间之后,ActiveMQ 5.15.9 代理似乎放弃了客户端(即查看 ActiveMQ 管理控制台显示零消费者)。奇怪的是on_disconnected
客户端的处理程序永远不会被调用,并且我们对检查连接的客户端服务进行了健康检查is_connected()
,但它仍然返回 true。
根据我的理解/研究(如果有任何错误,请更正)这是由于经纪人试图清理它认为不活动的资源。同样根据我的研究,“心跳”可以用来避免对经纪人的这种看法。
我知道如何从客户端发送心跳标头以及如何检查来自服务器/代理的响应(就它所期望的而言),on_connected
但我的问题是如何将实际的心跳从客户端发送到服务器/代理? 我需要在我正在收听的队列上发送消息吗?如果是这样,我如何发送“心跳消息”而不必调整侦听器中的消息处理代码?没有实体送吗?还需要将代理配置为接受心跳吗?如果未配置,则从客户端声明和发送它们仍会导致代理断开客户端连接?