rabbitmq 单, 多进程并发 消费 python 脚本

探讨Python脚本消费RabbitMQ队列时的性能瓶颈,分析单线程与多线程消费模式下队列处理顺序及CPU消耗问题,提供pika模块不同版本的使用对比。

问题

python 脚本进行 MQ 消费过慢, rabbitmq 服务端开始累积队列的时候, 会发现 python 脚本跑满 CPU
假如消费队列中, 消息具有前后依赖关系,那么多线程并发 python 脚本可以保持这个依赖关系吗

例如
消息 ID 1 openstack NOVA 发送消息我要创建云主机
消息 ID 2 openstack CINDER 发送信息,我要创建一个 10GB 的云盘
消息 ID 3 把创建的云盘挂载到云主机中

上述问题纯属假设, 我们不考虑程序的重试机制, 超时机制, 回源机制
那么就是说,假如如果不顺序执行 MQ 任务, 可能会导致错误发生

说明

本文只针对 customer 部分进行单进程, 多进程测试

pika 说明

当使用 centos7 进行程序开发时, 可以通过两种方法安装 pika 模块

yum install -y python2-pika-0.10.0-9.el7.noarch (安装 pika-0.9 版本)
pip install pika (安装了 pika 1.1.0 版本)

区别

pika 0.9.0

进行 rabbitmq 消费时, 经常会遇到服务器中有消费堆积现象发生
当服务器端有消费堆积时候, 运行 customer python 进程 CPU 消耗会达到 100%

注意使用时参数却别

result = channel.queue_declare(exclusive=True)   可以不指定 QUEUE 参数
channel.basic_consume(callback,
                      queue_name='fanout_cmdb3_mq_exchange',
                      no_ack=False)

pika 1.1.0

解决了对服务端消费堆积问题
没有再发现 python 脚本 CPU 消耗 100% 问题

注意使用时参数却别

 result = channel.queue_declare(exclusive=Tru
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值