Python通过RabbitMQ服务器实现交换机功能的实例教程


Posted in Python onJune 29, 2016

快速回顾一下RabbitMQ服务器的安装:

sudo apt-get install rabbitmq-server

Python使用RabbitMQ需要Pika库:

sudo pip install pika

好了,接下来我们先看交换机的工作原理:消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里接收到信息。

Python通过RabbitMQ服务器实现交换机功能的实例教程

下面用send.py和receive.py来模拟实现交换机的功能。send.py表示发送端,receive.py表示接收端。

receive.py:

#!/usr/bin/env python
#coding=utf8
import pika
 
connection = pika.BlockingConnection(pika.ConnectionParameters(
        'localhost'))
channel = connection.channel()
 
#定义交换机
channel.exchange_declare(exchange='messages', type='fanout')
 
#随机生成队列,并绑定到交换机上
result = channel.queue_declare(exclusive=True)
queue_name = result.method.queue
channel.queue_bind(exchange='messages', queue=queue_name)
 
def callback(ch, method, properties, body):
  print " [x] Received %r" % (body,)
 
channel.basic_consume(callback, queue=queue_name, no_ack=True)
 
print ' [*] Waiting for messages. To exit press CTRL+C'
channel.start_consuming()

上例代码中,queue_declare的参数exclusive=True表示当接收端退出时,销毁临时产生的队列,这样就不会占用资源。运行这个程序,然后使用rabbitmqctl list_exchanges命令来查看交换机信息:

Python通过RabbitMQ服务器实现交换机功能的实例教程

其中红色框就是上例定义的交换机了。再使用rabbitmqctl list_queues查看下消息队列情况:

Python通过RabbitMQ服务器实现交换机功能的实例教程

其中红色框就是随机产生的消息队列了。

send.py:

#!/usr/bin/env python
#coding=utf8
import pika
 
connection = pika.BlockingConnection(pika.ConnectionParameters(
        'localhost'))
channel = connection.channel()
 
#定义交换机
channel.exchange_declare(exchange='messages', type='fanout')
 
#将消息发送到交换机
channel.basic_publish(exchange='messages', routing_key='', body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()

上例代码中, basic_publish方法的参数exchange被设定为相应交换机,因为是要广播出去,发送到所有队列,所以routing_key就不需要设定了。

exchange如果为空,表示是使用匿名的交换机,在上面交换机信息的图片中可以看到有amq.*这样的交换机,就是系统默认的交换机了。routing_key在使用匿名交换机的时候才需要指定,表示发送到哪个队列的意思。第一篇的例子演示了这个功能。

打开另外一个终端,执行send.py,可以观察到receive.py接收到了消息。如果有多个终端执行receive.py,那么每个receive.py都会接收到消息。

Python 相关文章推荐
python基础教程之循环介绍
Aug 29 Python
Python中用于检查英文字母大写的isupper()方法
May 19 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
numpy matrix和array的乘和加实例
Jun 28 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
python多线程并发实例及其优化
Jun 27 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
python适合做数据挖掘吗
Jun 16 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
深度学习小工程练习之垃圾分类详解
Apr 14 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 #Python
Python的消息队列包SnakeMQ使用初探
Jun 29 #Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 #Python
深入理解Python中装饰器的用法
Jun 28 #Python
Python中的迭代器与生成器高级用法解析
Jun 28 #Python
Python设计足球联赛赛程表程序的思路与简单实现示例
Jun 28 #Python
详解Python中heapq模块的用法
Jun 28 #Python
You might like
php实现粘贴截图并完成上传功能
2015/05/17 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
javascript各种复制代码收集
2008/09/20 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
Python作用域用法实例详解
2016/03/15 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
九年级体育教学反思
2014/01/23 职场文书
服装促销活动方案
2014/02/23 职场文书
法律系毕业生求职信
2014/05/28 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
担保书范本
2015/01/20 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
单位提档介绍信
2015/10/22 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
股东出资协议书
2016/03/21 职场文书