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的web框架中编写创建日志的程序的教程
Apr 30 Python
Python图算法实例分析
Aug 13 Python
Python爬虫:通过关键字爬取百度图片
Feb 17 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
Python装饰器的执行过程实例分析
Jun 04 Python
python绘制热力图heatmap
Mar 23 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
python 利用Pyinstaller打包Web项目
Oct 23 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 多进程 解决难题
2009/06/22 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
mac下安装nginx和php
2013/11/04 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
php无限级分类实现方法分析
2016/10/19 PHP
微信自定义分享php代码分析
2016/11/24 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
javascript+mapbar实现地图定位
2010/04/09 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
python requests 测试代理ip是否生效
2018/07/25 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
英语专业应届生求职信范文
2013/11/15 职场文书
汉语言文学职业规划
2014/02/14 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
基于Python实现对比Exce的工具
2022/04/07 Python
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB
vue如何清除浏览器历史栈
2022/05/25 Vue.js