我在我们的stomp.py 7.0客户机(仅用于侦听器)中看到了一些行为,在没有接收消息的空闲时间之后,ActiveMQ 5.15.9代理似乎放弃了客户机(即查看ActiveMQ管理控制台显示了零消费者)。奇怪的是,客户端的on_disconnected处理程序从未被调用,我们对检查连接is_connected()的客户端服务进行了健康检查,但是它仍然返回true。
根据我的理解/研究(如果其中任何一个是错误的,请更正),这是由于代理试图清理它认为不活跃的资源。此外,根据我的研究,“心跳”可以用来避免这种对经纪人的看法。
我知道如何从客户端发送心跳头,以及如何在on_connected中检查来自服务器/代理的响应(按照它的期望),但我的问题是如何将实际的心跳从客户机发送到服务器/代理?我是否需要在我正在收听的队列上发送消息?如果是这样,我如何发送“心跳消息”而不必调整侦听器中的消息处理代码?我能不带身体送过去吗?此外,是否需要将代理配置为接受心跳?如果没有配置,那么声明和从客户端发送它们仍然会导致代理断开客户端的连接吗?
发布于 2022-02-18 19:54:05
心跳是踩踏1.2的一部分,所以只要您的客户端支持STOP1.2,您就应该能够在建立连接时配置心脏跳动。此外,如果您的代理支持STOP1.2,它应该接受heart-beat头并相应地调整其行为。你不应该有自己的心跳。在没有任何“正常”STOMP框架的情况下,客户端本身应该按照规范中的描述发送EOL。
如果您的客户端不支持STOP1.2,那么您应该升级到一个这样做的客户端。STOP1.2规范是在2012年10月发布的,大约十年前,现在已经有足够的时间来实现支持了。
https://stackoverflow.com/questions/71178856
复制相似问题