Python rabbitMQ如何实现生产消费者模式


Posted in Python onAugust 24, 2020

(一)安装一个消息中间件,如:rabbitMQ

(二)生产者

sendmq.py

import pika
import sys
import time
 
# 远程rabbitmq服务的配置信息
username = 'admin' # 指定远程rabbitmq的用户名密码
pwd = 'admin'
ip_addr = '10.1.7.7'
port_num = 5672
 
# 消息队列服务的连接和队列的创建
credentials = pika.PlainCredentials(username, pwd)
connection = pika.BlockingConnection(pika.ConnectionParameters(ip_addr, port_num, '/', credentials))
channel = connection.channel()
# 创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)
channel.queue_declare(queue='balance', durable=True)
 
message_str = 'Hello World!'
for i in range(100000000):
  # n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.
  channel.basic_publish(
    exchange='',
    routing_key='balance', # 写明将消息发送给队列balance
    body=message_str, # 要发送的消息
    properties=pika.BasicProperties(delivery_mode=2, ) # 设置消息持久化(持久化第二步),将要发送的消息的属性标记为2,表示该消息要持久化
  ) # 向消息队列发送一条消息
  print(" [%s] Sent 'Hello World!'" % i)
  # time.sleep(0.2)
connection.close() # 关闭消息队列服务的连接

运行sendmq.py文件,可以从以下方法查看队列中的消息数量。

一是,rabbitmq的管理界面,如下图所示:

Python rabbitMQ如何实现生产消费者模式

二是,从服务器端命令查看

rabbitmqctl list_queues

Python rabbitMQ如何实现生产消费者模式

(三)消费者

receivemq.py

import pika
import sys
import time
 
# 远程rabbitmq服务的配置信息
username = 'admin' # 指定远程rabbitmq的用户名密码
pwd = 'admin'
ip_addr = '10.1.7.7'
port_num = 5672
 
credentials = pika.PlainCredentials(username, pwd)
connection = pika.BlockingConnection(pika.ConnectionParameters(ip_addr, port_num, '/', credentials))
channel = connection.channel()
 
# 消费成功的回调函数
def callback(ch, method, properties, body):
  print(" [%s] Received %r" % (time.time(), body))
  # time.sleep(0.2)
 
 
# 开始依次消费balance队列中的消息
channel.basic_consume(queue='balance', on_message_callback=callback, auto_ack=True)
 
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming() # 启动消费

运行receivemq.py文件,可以从以下方法查看队列中的消息数量。

Python rabbitMQ如何实现生产消费者模式

或者

rabbitmqctl list_queues

延伸:

systemctl status rabbitmq-server.service # 状态
systemctl restart rabbitmq-server.service # 重启

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Django中的form库的使用
Jul 18 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
详解Python中的type和object
Aug 15 Python
python导入pandas具体步骤方法
Jun 23 Python
Python中新式类与经典类的区别详析
Jul 10 Python
python实现广度优先搜索过程解析
Oct 19 Python
python实现布隆过滤器及原理解析
Dec 08 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
Python实现Kerberos用户的增删改查操作
Dec 14 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 #Python
深入分析python 排序
Aug 24 #Python
超级实用的8个Python列表技巧
Aug 24 #Python
基于CentOS搭建Python Django环境过程解析
Aug 24 #Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 #Python
python3让print输出不换行的方法
Aug 24 #Python
Django3中的自定义用户模型实例详解
Aug 23 #Python
You might like
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
php采集速度探究总结(原创)
2008/04/18 PHP
PHP面向对象法则
2012/02/23 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
JavaScript 变量基础知识
2009/11/07 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
Python算法之栈(stack)的实现
2014/08/18 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
python openssl模块安装及用法
2020/12/06 Python
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
物业电工岗位职责
2013/11/20 职场文书
精通CAD能手自荐书
2014/01/31 职场文书
预备党员转正材料
2014/12/19 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
致青春观后感
2015/06/09 职场文书
新学期开学标语2015
2015/07/16 职场文书
谢师宴家长致辞
2015/07/27 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
小学四年级作文之写景
2019/08/23 职场文书
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技
OpenFeign实现远程调用
2022/08/14 Java/Android