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制作简单的钢琴程序的教程
Apr 01 Python
详解Django中的权限和组以及消息
Jul 23 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
Python数据类型之String字符串实例详解
May 08 Python
Python OrderedDict的使用案例解析
Oct 25 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
Python进行区间取值案例讲解
Aug 02 Python
python中urllib包的网络请求教程
Apr 19 Python
python中filter,map,reduce的作用
Jun 10 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
真正的ZIP文件操作类(php)
2007/07/21 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
php抽象类用法实例分析
2015/07/07 PHP
golang与PHP输出excel示例
2016/07/22 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
Js中sort()方法的用法
2006/11/04 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
浅析Python基础-流程控制
2016/03/18 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Python中and和or如何使用
2020/05/28 Python
python request 模块详细介绍
2020/11/10 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
HTML5的新特性(1)
2016/03/03 HTML / CSS
大学生职业规划前言模板
2013/12/27 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
Elasticsearch 数据类型及管理
2022/04/19 Python