当前位置: 首页 > 后端技术 > Python

rabbitmq心跳机制总结和使用心得

时间:2023-03-26 14:26:29 Python

厘清几个前提知识Q:为什么rabbitmq服务器需要心跳机制A:首先我们要知道amqp是基于tcp的,tcp有心跳机制。那么为什么不用tcpheartbeat来保证“可靠性”呢?答案是tcp的心跳,无法从amqp层面进行干预。我们需要一个应用层心跳机制。比如使用tcpheartbeat查找“networkunreachable”需要十多分钟,这个时间太长,在某些场景下是不能接受的。参考:为什么rabbitmq消费者需要心跳?生产者需要用rabbitmq保持心跳吗?TCP连接断开后,为什么对端10分钟后才知道?rabbitmq消费消息时如何保持心跳Q:rabbitmq的心跳机制是pull还是push模型?A:它是一个推送模型。首先,rabbitmq服务器会向客户端发送一个心跳包。然后客户端收到心跳后会回复一个心跳给rabbitmq服务器。这样就完成了一次心跳检测。如图,192.168.31.245为rabbitmq服务器,192.168.31.103为rabbitmq客户端。使用kombu编写相关代码。生产者心跳使用nameko时,发现生产者通常关闭心跳。如果想开启producer的心跳,可以参考以下链接:connection.heartbeat_check好像没有心跳?消费者心跳参考:Kombu维护消费者心跳