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 变量类型及命名规则介绍
Jun 08 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
TensorFlow 显存使用机制详解
Feb 03 Python
python实现录屏功能(亲测好用)
Mar 02 Python
Python中Selenium库使用教程详解
Jul 23 Python
几款好用的python工具库(小结)
Oct 20 Python
python3中确保枚举值代码分析
Dec 02 Python
Python道路车道线检测的实现
Jun 27 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往windows中添加用户
2006/12/06 PHP
PHP 加密与解密的斗争
2009/04/17 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
PHP之短标签开启设置
2013/06/17 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
js版本A*寻路算法
2006/12/22 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
Python中的流程控制详解
2021/02/18 Python
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
电子商务个人自荐信
2013/12/12 职场文书
思想品德课教学反思
2014/02/10 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
小学生倡议书范文
2014/05/13 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
单位实习介绍信
2015/05/05 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
导游词之临安白水涧
2019/11/05 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python