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实现在windows下操作word的方法
Apr 28 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
Python玩转Excel的读写改实例
Feb 22 Python
Python用字典构建多级菜单功能
Jul 11 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
python实现的config文件读写功能示例
Sep 24 Python
pandas的相关系数与协方差实例
Dec 27 Python
Pytorch转onnx、torchscript方式
May 25 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
Python try except finally资源回收的实现
Jan 25 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
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
解析php中的escape函数
2013/06/29 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
Javascript Select操作大集合
2009/05/26 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
js操作浏览器的参数方法
2017/01/21 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python Trie树实现字典排序
2014/03/28 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
医学生个人求职信范文
2013/09/24 职场文书
施工资料员岗位职责
2014/01/06 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
我的梦想演讲稿
2014/04/30 职场文书
项目经理任命书范本
2014/06/05 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
详解php中流行的rpc框架
2021/05/29 PHP
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
从原生JavaScript到React深入理解
2022/07/23 Javascript
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL