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之模拟鼠标键盘动作具体实现
Dec 30 Python
Python深入学习之内存管理
Aug 31 Python
Python 基础之字符串string详解及实例
Apr 01 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
python 把列表转化为字符串的方法
Oct 23 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
使用python求解二次规划的问题
Feb 29 Python
python 生成任意形状的凸包图代码
Apr 16 Python
Python打印不合法的文件名
Jul 31 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
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
js new Date()实例测试
2019/10/31 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
Python魔法方法功能与用法简介
2019/04/04 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
Python读写Excel表格的方法
2021/03/02 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
中专生自我鉴定书范文
2013/12/28 职场文书
班级聚会策划书
2014/01/16 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
党员创先争优活动总结
2014/05/04 职场文书
国旗下的演讲稿
2014/05/08 职场文书
工作求职信
2014/07/04 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
汽车转让协议书
2015/01/29 职场文书
不同意离婚上诉状
2015/05/23 职场文书
从事会计工作年限证明
2015/06/23 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
四年级作文之植物
2019/09/20 职场文书
一篇文章学会Vue中间件管道
2021/06/20 Vue.js
MySQL主从切换的超详细步骤
2022/06/28 MySQL