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 相关文章推荐
python 文件与目录操作
Dec 24 Python
python登陆asp网站页面的实现代码
Jan 14 Python
Python中字典创建、遍历、添加等实用操作技巧合集
Jun 02 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
django文档学习之applications使用详解
Jan 29 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
python super的使用方法及实例详解
Sep 25 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
python中opencv实现图片文本倾斜校正
Jun 11 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
JavaScript 对象模型 执行模型
2009/12/06 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
使用python加密自己的密码
2015/08/04 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python数据操作方法封装类实例
2017/06/23 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Python3.8中使用f-strings调试
2019/05/22 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
大学生军训自我评价分享
2013/11/09 职场文书
自我介绍演讲稿
2014/01/15 职场文书
中学教师自我鉴定
2014/02/07 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
信息工作经验交流材料
2014/05/28 职场文书
2014年检验员工作总结
2014/11/19 职场文书
回复函范文
2015/07/14 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
医院病假条范文
2015/08/17 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
2019消防宣传标语!
2019/07/10 职场文书
Python 文字识别
2022/05/11 Python
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL