路由键模糊匹配

使用正则表达式进行匹配。其中“#”表示所有、全部的意思;“*”只匹配到一个词。

匹配规则:

路由键:routings = [ 'happy.work',  'happy.life' , 'happy.work.teacher',  'sad.work',  'sad.life', 'sad.work.teacher' ]

"#":匹配所有的路由键

"happy.#":匹配  'happy.work',  'happy.life' , 'happy.work.teacher'

"work.#":无匹配

“happy.*”:匹配 'happy.work',  'happy.life'

"*.work":匹配 'happy.work',  'sad.work'

"*.work.#":匹配  'happy.work',  'happy.work.teacher',  'sad.work', 'sad.work.teacher'

示例代码:

send4.py:

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 import pika
 4
 5 hostname = '192.168.1.133'
 6 parameters = pika.ConnectionParameters(hostname)
 7 connection = pika.BlockingConnection(parameters)
 8
 9 # 创建通道
10 channel = connection.channel()
11 # 定义交换机,设置类型为topic
12 channel.exchange_declare(exchange='change_top', type='topic')
13
14 # 定义路由键
15 routings = ['happy.work', 'happy.life', 'sad.work', 'sad.life']
16
17 # 将消息依次发送到交换机,并设定路由键
18 for routing in routings:
19     message = '%s message.' % routing
20     channel.basic_publish(exchange='change_top', routing_key=routing, body=message)
21     print message
22
23 connection.close()

receive4.py:

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 import pika
 4 import sys
 5
 6 hostname = '192.168.1.133'
 7 parameters = pika.ConnectionParameters(hostname)
 8 connection = pika.BlockingConnection(parameters)
 9
10 # 创建通道
11 channel = connection.channel()
12 # 定义交换机,设置类型为topic
13 channel.exchange_declare(exchange='change_top', type='topic')
14
15 # 从命令行获取路由参数,如果没有,则报错退出
16 routings = sys.argv[1:]
17 if not routings:
18     print >> sys.stderr, "Usage: %s [routing_key]..." % (sys.argv[0],)
19     exit()
20
21 # 生成临时队列,并绑定到交换机上,设置路由键
22 result = channel.queue_declare(exclusive=True)
23 queue_name = result.method.queue
24 for routing in routings:
25     channel.queue_bind(exchange='change_top', queue=queue_name, routing_key=routing)
26
27
28 def callback(ch, method, properties, body):
29     print " [x] Received %r" % (body,)
30
31
32 channel.basic_consume(callback, queue=queue_name, no_ack=True)
33
34 print ' [*] Waiting for messages. To exit press CTRL+C'
35 channel.start_consuming()

打开四个终端,运行一下命令:

发送端:

接收端:

                        

转载于:https://www.cnblogs.com/jfl-xx/p/7345339.html

python中RabbitMQ的使用(路由键模糊匹配)相关推荐

  1. Python中RabbitMQ的使用

    Python中RabbitMQ的使用 文章目录 Python中RabbitMQ的使用 一.AMQP协议 1.工作过程 2.细节问题 3.Exchange交换机 主题交换机: 4.Queue队列 5.C ...

  2. 刚安装的python如何使用-python中RabbitMQ的使用(安装和简单教程)

    1,简介 RabbitMQ(Rabbit Message Queue)是流行的开源消息队列系统,用erlang语言开发. 1.1关键词说明: Broker:消息队列服务器实体. Exchange:消息 ...

  3. python写入csv文件中添加行_在python中为csv文件输出键添加值

    这是我的输入csv文件. client_ip listener_service listener_port 127.0.0.1 LMNO 123 ::1 PQAR 768 ::1 PQAR 128 1 ...

  4. python中向字典循环加入键值对

    向字典中的每一个键值对后面增加一个 'user':'1': {'rjtb.1': {'id': 'rjtb.1','original_text': '学校有14棵杨树,杨树的棵数是松树的2倍,柳树比松 ...

  5. python 地址模糊匹配_使用python处理selenium中的xpath定位元素的模糊匹配问题

    # 用contains,寻找页面中style属性值包含有sp.gif这个关键字的所有div元素,其中@后面可以跟该元素任意的属性名. self.driver.find_element_by_xpath ...

  6. C#中MySQL语句带参数的模糊匹配问题

    用的是MySQL数据库,但是当我用带参数的sql语句进行模糊查询时,发现MySQL没有识别我的参数中的内容.经过了多次实验,终于找到了答案,拿出来和大家分享,不多说了,详细如下: public Dat ...

  7. python中怎么比较两个列表-如何比较python中的两个列表并返回匹配

    快速性能测试显示Lutz的解决方案是最好的:import timedef speed_test(func): def wrapper(*args, **kwargs): t1 = time.time( ...

  8. element-UI中el-select组件使用拼音进行模糊匹配可选择项

    一.安装pinyin-match包 yarn add pinyin-match 二.引入包 import PinYinMatch from 'pinyin-match'; 三.直接上代码 <el ...

  9. python 路由转发_RabbitMQ之路由键转发消息

    RabbitMQ学习 消息队列:目前流行的有 Kafka.RabbitMQ.ActiveMQ等 功能:为了解决消息的分布式消费,完成项目.服务之间的解耦动作.消息的生产者与消费者之间完全采用异步通信方 ...

最新文章

  1. SpringBoot+MySQL+MyBatis+Shiro+AdminLTE
  2. 2016第51周三产品经理如何更有说服力
  3. GMGDC专訪戴亦斌:具体解释QAMAster全面測试服务6大功能
  4. python水印 resized_如何改进Python中的水印图像?
  5. stl向量_如何在C ++ STL中将数组元素复制到向量?
  6. java多个文件压缩_java实现多个文件压缩
  7. PHP操作tcpdf插件生成PDF
  8. php 5.6 mcrypt,mcrypt在Windows / IIS上的PHP 5.6中不起作用
  9. RoboWare Studio使用的部分问题
  10. flutter微信登录与支付--fluwx
  11. 优矿python开源_PythonStock(8):使用优矿web学习python入门
  12. 24个关键词致敬科比系列之——凌晨四点
  13. TI男选隐形眼镜之机器学习
  14. 运行shell脚本时怎么知道jdk路径_linux查看java jdk安装路径和设置环境变量 – HouYing – 博客频道 – CSDN.NET...
  15. 决策树(四):使用决策树预测隐形眼镜类型
  16. 肾囊肿的临床症状有哪些?
  17. 如何在未越狱的iOS 设备上安装 ipa
  18. BERT cased和uncased的区别
  19. ubuntu11.04下Discuz论坛的安装
  20. 类似QQ农场的html模板,这个机器人种菜像玩QQ农场一样简单 你只需收割

热门文章

  1. 百度贴吧前负责人:做产品16年,我有9条心得[转]
  2. 端口停止使用_我停止使用
  3. div文字自动扩充_文字资料扩充
  4. 美国将对所有墨西哥输美商品加征关税,为何日本股市反而大跌?
  5. 怎么样从一个疯狂下载者成为一个学习者
  6. 阿联酋esma认证_阿联酋无人驾驶汽车预计2021年上路
  7. 操作系统锁的实现方法有哪几种_「从入门到放弃-Java」并发编程-锁-synchronized...
  8. aws mysql价格_mysql – AWS RDS“转出”成本有多贵?
  9. python找房源_Python租房信息分析!找到最适合自己的房源信息!
  10. python怎么退出help_(转)python中如何使用help命令?