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实现socket端口重定向示例
Feb 10 Python
在Python的web框架中中编写日志列表的教程
Apr 30 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
Python中logging日志库实例详解
Feb 19 Python
python中pdb模块实例用法
Jan 15 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 Python
python_tkinter弹出对话框创建
Mar 20 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输入流php://input介绍
2012/09/18 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
自己的js工具 Cookie 封装
2009/08/21 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
Python pip 常用命令汇总
2020/10/19 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
违纪检讨书2000字
2014/02/08 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
《观舞记》教学反思
2014/04/16 职场文书
跑操口号
2014/06/12 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
调任通知
2015/04/21 职场文书
环境卫生标语
2015/08/03 职场文书
资产移交协议书
2016/03/24 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
java开发双人五子棋游戏
2022/05/06 Java/Android