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实现的文本简单可逆加密算法示例
May 18 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
May 29 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
Python实现UDP程序通信过程图解
May 15 Python
Django中的AutoField字段使用
May 18 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 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与数据库代码开发规范
2013/08/08 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
Python 基础知识之字符串处理
2017/01/06 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
Django中信号signals的简单使用方法
2019/07/04 Python
django表单的Widgets使用详解
2019/07/22 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
Python request使用方法及问题总结
2020/04/26 Python
通过cmd进入python的步骤
2020/06/16 Python
Python 中如何写注释
2020/08/28 Python
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
12岁生日感言
2014/01/21 职场文书
欢迎家长标语
2014/10/08 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python