关于 rabbitmq 心跳机制的总结和使用经验
明确几个事情
前提知识
Q:为什么 rabbitmq server 需要一个心跳机制
A:首先,我们要知道 amqp 是基于 tcp 的,tcp 是有心跳机制的。那么为什么不用 tcp 的心跳来保证『可靠性』呢?答案就是 tcp 的心跳,从 amqp 层面是无法介入的,我们需要一个应用层心跳机制。比如使用 tcp 心跳发现『网络不可达』需要十几分钟,这在一些场景下,太长了,不可接受。
参考:
rabbitmq 消费者为什么需要心跳
生产者需要和 rabbitmq 保持心跳吗?
TCP 连接断开之后,为什么对端需要 10 分钟往上才能知道?
rabbitmq 消费消息的时候如何保持心跳
Q:rabbitmq 的心跳机制使用的是 pull 还是 push 模型?
A:是 push 模型。首先,rabbitmq server 会发一个心跳包到 client。然后 client 收到这个 heartbeat 之后要回复一个 heartbeat 给 rabbitmq server。这样一来一回,一个心跳检查就完成了。
如图所示,192.168.31.245 是 rabbitmq server,192.168.31.103 是 rabbitmq client
使用 kombu 编写相关代码
生产者心跳
使用 nameko 的时候,发现 producer,一般是关闭心跳的。
如果想开启 producer 的 心跳,可以看下面的链接
参考:connection.heartbeat_check does not seem to heartbeat?
消费者心跳
python后端实战经验分享
Python来自荷兰,面向未来
推荐阅读
python 中,是先运行 metaclass 还是先有类属性?
答案:先有 “类属性”,再有 “运行 metaclass” {代码...} 输出结果如下: {代码...}
ponponon
基于Sanic的微服务基础架构
使用python做web开发面临的一个最大的问题就是性能,在解决C10K问题上显的有点吃力。有些异步框架Tornado、Twisted、Gevent 等就是为了解决性能问题。这些框架在性能上有些提升,但是也出现了各种古怪的问题难以...
jysong赞 6阅读 3.9k评论 3
滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?
良许赞 4阅读 2.2k
又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。
良许赞 5阅读 1.8k
FastAPI性能碾压Flask?
不止一次的听过,FastAPI性能碾压Flask,直追Golang,不过一直没有测试过,今天闲着没事测试一下看看结果。不知道是哪里出了问题,结果大跌眼镜。
二毛erma0赞 2阅读 10.1k评论 3
程序员适合创业吗?
大家好,我是良许。从去年 12 月开始,我已经在视频号、抖音等主流视频平台上连续更新视频到现在,并得到了不错的评价。每个视频都花了很多时间精力用心制作,欢迎大家关注哦~考虑到有些小伙伴没有看过我的视频,...
良许赞 3阅读 1.8k
Python之如何优雅的重试
为了避免偶尔的网络连接失败,需要加上重试机制,那么最简单的形式就是在对应的代码片段加一个循环,循环体里使用异常捕获,连接成功时退出循环,否则就重复执行相关逻辑,此时修改之后的函数f如下
Harpsichord1207赞 3阅读 7.3k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。