openresty 学习笔记番外篇:python访问RabbitMQ消息队列
openresty 学习笔记番外篇:python访问RabbitMQ消息队列
python使用pika扩展库操作RabbitMQ的流程梳理。
- 客户端连接到消息队列服务器,打开一个channel。
- 客户端声明一个exchange,并设置相关属性。(可以省略,不过必须保证所指定的交换器存在)
- 客户端声明一个queue,并设置相关属性。(可以省略,不过必须保证所指定的队列存在)
- 客户端使用routing key,在exchange和queue之间建立好绑定关系。(可以省略,不过必须保证其绑定关系)
作为生产者
客户端投递消息到exchange。
作为消费者
客户端通过队列接收消息,处理后进行应答。
producerConn = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
producerChannel = consumerConn.channel()
producerChannel.exchange_declare(exchange = 'exchangeName',
type = 'topic',
durable=True,
auto_delete=False)
producerChannel.queue_declare(queue = 'queueName', durable=True)
producerChannel.queue_bind(exchange = 'exchangeName',
queue = 'queueName',
routing_key = 'key')
msg_props = pika.BasicProperties()
msg_props.content_type = "application/json"
producerChannel.basic_publish(exchange = 'exchangeName',
routing_key = 'key',
body = '{"name": "android"}',
properties = msg_props)
作为消费者需要定义一个回调函数
def callback(ch, method, properties, body):
mainLogger.info(body)
ch.basic_ack(delivery_tag = method.delivery_tag) consumerConn = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
consumerChannel = consumerConn.channel()
consumerChannel.exchange_declare(exchange = 'exchangeName',
type = 'topic',
durable=True,
auto_delete=False)
consumerChannel.queue_declare(queue = 'queueName', durable=True)
consumerChannel.queue_bind(exchange = 'exchangeName',
queue = 'queueName',
routing_key = 'key')
consumerChannel.basic_qos(prefetch_count=1)
consumerChannel.basic_consume(callback , queue = 'queueName')
consumerChannel.start_consuming()
官方文档:
http://www.rabbitmq.com/tutorials/tutorial-one-python.html
openresty 学习笔记番外篇:python访问RabbitMQ消息队列的更多相关文章
- openresty 学习笔记番外篇:python的一些扩展库
openresty 学习笔记番外篇:python的一些扩展库 要写一个可以使用的python程序还需要比如日志输出,读取配置文件,作为守护进程运行等 读取配置文件 使用自带的ConfigParser模 ...
- 《30天自制操作系统》学习笔记--番外篇之Mac环境下的工具介绍
这几天又有点不务正业了,书也没看,一直在搞这个破环境,尝试各种做法,网上各种垃圾信息,浪费了很多时间,说的基本都是废话,不过还是找到了一些,赶紧写下来,不然这个过几天又忘了 首先是环境,我用的是Max ...
- openresty 学习笔记五:访问RabbitMQ消息队列
openresty 学习笔记五:访问RabbitMQ消息队列 之前通过比较选择,决定采用RabbitMQ这种消息队列来做中间件,目的舒缓是为了让整个架构的瓶颈环节.这里是做具体实施,用lua访问Rab ...
- Python操作rabbitmq消息队列持久化
消息队列持久化 Python操作rabbit消息队列的持久化,如下: # 创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)channel.queue_ ...
- Redis 学习笔记(六)Redis 如何实现消息队列
一.消息队列 消息队列(Messeage Queue,MQ)是在分布式系统架构中常用的一种中间件技术,从字面表述看,是一个存储消息的队列,所以它一般用于给 MQ 中间的两个组件提供通信服务. 1.1 ...
- Python学习-day10(番外篇) 阻塞IO 非阻塞IO 同步IO 异步IO
这个章节的内容是关于IO的概念,谈一谈什么是 阻塞IO 非阻塞IO 同步IO 异步IO.以下摘要是我对这四种IO的一个形象理解. 场景是去去银行办理业务.节点有三个,1)到银行提交申请:2)取号:3) ...
- vue学习【番外篇】vue-cli脚手架的安装
大家好,我是一叶,今天和大家分享的是vue-cli脚手架的安装,关于vue-cli的优点,我就不赘述了. 一.检查安装node 安装vue-cli之前,先检查node是否安装.win+R,输入cmd打 ...
- H5学习_番外篇_PHP数据库操作
1. 文件操作 1.1 打开关闭文件 fopen() resource fopen ( string filename, string mode [, bool use_include_path [, ...
- 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记番外(1) - JLinkScript妙用
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记番外篇之JLinkScript妙用. JLinkScript 文件是配套 J-Link 调试器使用的脚本,这个脚本适 ...
随机推荐
- 01- linux入门
LINUX是什么? -linux是计算机操作操作系统 -常见的操作系统有:Windows,Android,苹果iOS,Mac系统,Unix(和linux类似) 操作系统是干什么的? 管理硬件和程序的一 ...
- 4.Linux命令基本格式与简单使用
Linux命令名组成: 在Linux/Unix系统下输入命令,就会进行相应的操作,那么这个命令有如下组成: 命令名 [选项] [参数] 注:[]的内容代表可选 命令实例: ls #显示当前文件夹下的所 ...
- ESXI的使用
一台物理裸机服务器装上了ESXI就有了灵魂 vmware esxi的安装 多网段站群服务器 参考教程 安装ESXi VMware ESXI 6.5安装教程 物理机下安装 VMware ESXi 6.7 ...
- 【小技巧】Windows 小技巧
快捷键: 1.Win7窗口最大化和最小化快捷键 最大化:window+↑ 最小化:window+↓
- 【SpringBoot】Springboot2.x整合Redis(一)
备注: springboto整合redis依赖于spring-boot-starter-data-redis这个jar 一,项目环境和依赖 1.POM.xml配置 <parent> < ...
- 洛谷P1085 不高兴的津津
题目描述 津津上初中了.妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班.另外每周妈妈还会送她去学习朗诵.舞蹈和钢琴.但是津津如果一天上课超过八个小时就会不高兴,而 ...
- Python中os模块、csv模块和xlrd模块的使用
目录 os模块的使用 open("test.txt","mode") 读取文件中的内容 f.read() f.readline(size) f.readline ...
- Win10 ntoskrnl.exe蓝屏解决
主机一直用的是无线网卡,装Win10下载驱动.不管是Window10自己更新,还是通过驱动人生.驱动精灵等安装的Killer网卡驱动,均日常导致蓝屏. 状态是这样的:玩游戏蓝屏.检测系统蓝屏.清垃圾蓝 ...
- 解决@Autowired警告
在使用spring框架中的依赖注入注解@Autowired时,idea报了一个警告 被警告的代码如下: @Autowired UserDao userDao; 警告提示信息:Field injecti ...
- Lombok Requires Annotation Processing Annotation processing seems to be disabled for the project "HelloWorld". For plugin to function correctly, please enable it under "Settings > Build > Compiler >
更多精彩详见微信公众号 在网上查找说是插件的问题,但是我安装类插件父级项目没有开启注解处理Annotation Processor,子项目都有开启,如图,顶级项目是demo,下面的都是子项目,把第一 ...