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可变参数函数用法实例
Jul 07 Python
Python退火算法在高次方程的应用
Jul 26 Python
详解Python中的type和object
Aug 15 Python
python制作简单五子棋游戏
Jun 18 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
Python pip 常用命令汇总
Oct 19 Python
matplotlib之属性组合包(cycler)的使用
Feb 24 Python
python读取mnist数据集方法案例详解
Sep 04 Python
详解NumPy中的线性关系与数据修剪压缩
May 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中数组合并的两种方法及区别介绍
2012/09/14 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
JavaScript中Function详解
2015/02/27 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python中防止sql注入的方法详解
2017/02/25 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
探亲邀请信范文
2014/01/30 职场文书
八一建军节感言
2014/02/28 职场文书
广播体操口号
2014/06/18 职场文书
英文投诉信格式
2015/07/03 职场文书