Python操作RabbitMq
时间:2020-03-26
本文章向大家介绍Python操作RabbitMq,主要包括Python操作RabbitMq使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一:生产者消费者模型
对于RabbitMQ来说,生产和消费不再针对内存里的一个Queue对象,而是某台服务器上的RabbitMq Server实现的消息队列。
生产者(producter):用来产生数据 并将数据发送到队列中
import pika # 引入mq包 import time credentials = pika.PlainCredentials('SR', '123456') # 如果需要远程连接mq服务需要传入用户名密码进行验证 connection = pika.BlockingConnection(pika.ConnectionParameters(host='127.0.0.1', port=5672)) # 创建mq的连接 channel = connection.channel() # 声明一个频道 res = channel.queue_declare(queue='SR') # 创建一个队列 队列名称SR print(res) # <METHOD(['channel_number=1', 'frame_type=1', "method=<Queue.DeclareOk(['consumer_count=0', 'message_count=0', 'queue=SR'])>"])> for i in range(5): message = 'hello world%s' % i # 向队列插入数值 routing_key是队列名 # body传入的数据 channel.basic_publish(exchange='', routing_key='SR', body=message) connection.close() # 关闭链接通道
消费者(consumer):队列消息的接收者,负责 接收并处理 消息队列中的消息
import pika import time credentials = pika.PlainCredentials('SR', '123456') # 如果需要远程连接mq服务需要传入用户名密码进行验证 connection = pika.BlockingConnection(pika.ConnectionParameters(host='127.0.0.1', port=5672)) # 创建mq的连接 channel = connection.channel() # 声明一个频道 res = channel.queue_declare(queue='SR') # 创建一个队列 队列名称SR 防止生产者没有队列 消费者不知道从哪个队列取数据 def callback(ch, method, properties, body): print(ch) # <BlockingChannel impl=<Channel number=1 OPEN conn=<SelectConnection OPEN transport=<pika.adapters.utils.io_services_utils._AsyncPlaintextTransport object at 0x000000000C6CDDD8> print(method) # <Basic.Deliver(['consumer_tag=ctag1.d109b32cf17d46ca92c3d3a96d280df7', 'delivery_tag=1', 'exchange=', 'redelivered=False', 'routing_key=SR'])> print(properties) # <BasicProperties> print(body) # b'hello world0' 二进制数据 # 告诉rabbitmq,用callback来接收消息 channel.basic_consume( queue='SR', # 指定队列名 on_message_callback=callback # 从队列里获取消息 ) # 开始接收信息,并进入阻塞状态,队列里有信息才会调用callback进行处理 channel.start_consuming()
原文地址:https://www.cnblogs.com/SR-Program/p/12573159.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 超赞!墙裂推荐一个 MySQL 自动化运维工具!
- 设计模式-责任链模式
- 问题 linux下执行.sh 文件出现 no such file or directoryile
- 问题:ssm关于mybatis没有找到配置问题(not found)
- 设计模式-享元模式
- 设计模式-代理模式
- win10 x64下从0开始搭建YApi可视化接口管理平台
- dubbo(一)SPI机制与实现路径
- Go 使用三方 Redis 包操作 Redis
- 干货|这可能是最全的高并发、高性能、高可用解决方案总结
- 群晖多人协作开发
- 分享 Druid 连接池参数优化实战
- 使用 Eureka 简单实现服务健康监控日志分析
- Flask 入门系列教程(一)
- Flask 入门系列教程(二)