Python rabbitmq的使用(五)
2019独角兽企业重金招聘Python工程师标准>>>
上一篇说了路由键的功能,通过设置路由键,可以将消息发送到相应的队列,这里的路由键是要完全匹配,比如info消息的只能发到路由键为info的消息队列。
路由键模糊匹配,就是可以使用正则表达式,和常用的正则表示式不同,这里的话“#”表示所有、全部的意思;“*”只匹配到一个词。看完示例就能明白了。
这边继上一篇,还是用send.py和receive.py来实现路由键模糊匹配的功能。send.py表示发送端,receive.py表示接收端。实例的功能大概是这样:比如你有个知心好朋友,不管开心、伤心、工作上的还是生活上的事情都可以和她说;还有一些朋友可以分享开心的事情;还有一些朋友,你可以把不开心的事情和她说。
send.py代码分析
因为要进行路由键模糊匹配,所以交换机的类型要设置为topic,设置为topic,就可以使用#,*的匹配符号了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
上例中定义了四种类型的消息,容易理解,就不解释了,然后依次发送出去。
receive.py代码分析
同样,交换机的类型要设定为topic就可以了。从命令行接收参数的功能稍微调整了一下,就是没有参数时报错退出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
打开四个终端,一个运行如下,表示任何事情都可以和她说:
python receive.py "#"
另外一个终端 运行如下,表示可以和她分享开心的事:
python receive.py "happy.*"
第三个运行如下,表示工作上的事情可以和她分享:
python receive.py "*.work"
最后一个运行python send.py。结果不难想象出来,就不贴出来了。
参考文章:http://www.rabbitmq.com/tutorials/tutorial-five-python.html
在参考文章的最后面有提到几个难点,笔者自己做了测试,供大家参考:
1、发送信息时,如果不设置路由键,那么路由键设置为”*”的接收端是否能接收到消息?
发送信息时,如果不设置路由键,默认是表示广播出去,理论上所有接收端都可以收到消息,但是笔者试了下,路由键设置为"*"的接收端收不到任何消息。只有发送消息时,设置路由键为一个词,路由键设置为"*"的接收端才能收到消息。在这里,每个词使用"."符号分开的。
2、发送消息时,如果路由键设置为”..”,那么路由键设置为”#.*”的接收端是否能接收到消息?如果发送消息时,路由键设置为一个词呢?
两种情况,笔者都测试过了,可以的。
3、”a.*.#” 和”a.#”的区别
"a.#"只要字符串开头的一个词是a就可以了,比如a、a.haha、a.haha.haha。而这样的词是不行的,如abs、abc、abc.haha。"a.*.#"必须要满足a.*的字符串才可以,比如a.、a.haha、a.haha.haha。而这样的词是不行的,如a。
弄完上面的这些个问题,笔者觉着有些钻牛角尖了,不过既然官方有提出来,就钻一回吧。
转载于:https://my.oschina.net/u/2517356/blog/813716
Python rabbitmq的使用(五)相关推荐
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- python简单代码 春节集五福-新年福利来一波之Python轻松集齐五福(demo)
新的一年又要到来了,各个大的公司又在这年末为大家送上了新春的祝福,支付宝还是延续了这几年的传统,在年末为大家送上了集五福的活动,为了大家能更快更好的扫出来大大的"福",今天就带领大 ...
- python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
- python学习笔记(五)缩进
python学习笔记(五)缩进 原作:http://www.cnblogs.com/vamei/archive/2012/05/29/2524706.html 笔记: #!/usr/bin/env p ...
- python学习中文第五版_前5个学习Python的网站
python学习中文第五版 Python is a multi-utility high-level language (programming as well as a scripting lang ...
- python response重头开始_你必须学写 Python 装饰器的五个理由
你必须学写Python装饰器的五个理由 ----装饰器能对你所写的代码产生极大的正面作用 作者:Aaron Maxwell,2016年5月5日 Python装饰器是很容易使用的.任何一个会写Pytho ...
- python连载第十五篇~史上最全列表知识源码+答案
#2017-12-19 19:34:41 December Tuesday the 51 week, the 353 day #python连载第十五篇~list列表#列表定义,访问,索引,操作,切片 ...
- python list方法说明_对python中list的五种查找方法说明
Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...
- 5岁自学python编程-python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹...
python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...
- Python 基础课程第五天
Python 基础课程第五天 第四章:控制语句 循环结构 for循环和可迭代对象遍历 可迭代对象 range 对象 嵌套循环和综合练习 break 语句 continue 语句 else 语句 循环代 ...
最新文章
- Python数理统计
- RPC和REST区别
- python数据分析——如何用python连接远程数据库
- python初始化函数_当你学会了Python爬虫,网上的图片素材就开始免费了
- vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...
- Git学习(2)Git 安装
- Android的JNI【实战教程】4⃣️--C调用Java代码
- 【开发环境】Ubuntu 安装 Visual Studio Code 开发环境 ( 下载 Visual Studio Code 安装器 | Ubuntu 安装 deb 包 )
- matlab学习笔记 clc和clear
- (Rock, Paper, Scissors, Lizard and Spock)sheldon谢耳朵独创的剪刀,布,石头,蜥蜴,史波克 用代码实现
- 记一次jstack线程诊断
- python search用法,Python-re中search()函数的用法详解(查找ip)
- c# chart缩放,局部放大
- Learning both Weights and Connections for Efficient Neural Networks
- 2021年Java发展怎么样?现在学了Java技术出来是否还能找到工作?
- css如何在下拉框添加倒三角,CSS给选中元素增加倒三角形(示例代码)
- 卷积神经网络(CNN)相关知识以及数学推导
- esp8266-01s控制继电器开关
- 织信informat低代码平台怎么样?
- 平衡二叉排序树--调整方法快速记忆方法(渣男丢妻弃子法)
热门文章
- json 字符串反序列化成DataSet
- input输入框汇总
- 解决echart中:Cannot read property ‘queryComponents‘ of undefined
- MongoDB服务无法注册
- Linux用户与用户组
- ie11java阻止_企业IT管理员IE11升级指南【10】—— 如何阻止IE11的安装
- java system.out.read_一个java文件操作小程序 system.out.in buffer read
- Date和Calendar
- 深入理解java虚拟机 (一) 第二版
- 机器学习笔记(十五)——HMM序列问题和维特比算法