python中RabbitMQ的使用(路由键模糊匹配)

路由键模糊匹配

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

匹配规则:

路由键: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时钟切换处理(Verilog)

随着各种应用场景的限制,芯片在运行时往往需要在不同的应用下切换不同的时钟源,例如低功耗和高性能模式就分别需要低频率和高频率的时钟。两个时钟源有可能是同源且同步的,也有可能是不相关的。直接使用选择逻辑进行时钟切换大概率会导致分频…

Angular Elements 组件在非angular 页面中使用的DEMO

2019独角兽企业重金招聘Python工程师标准>>> 一、Angular Elements 介绍 Angular Elements 是伴随Angular6.0一起推出的新技术。它借助Chrome浏览器的ShadowDom API,实现一种自定义组件。 这种组件可以用Angular普通组件的开发技术进行编写,…

卢卡斯定理

卢卡斯定理:解决一类组合数取模问题 A、B是非负整数,p是质数。AB写成p进制:Aa[n]a[n-1]...a[0],Bb[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同余 即:Lucas(n,m,p)c(n%p,m%p)*Luc…

loadrunner中对https证书的配置

1、准备好网站的证书,一般证书是cer格式; 2、因为loadrunner只支持pem格式的证书,所以要将证书转换格式,利用openssl工具;(或者直接让开发提供pem格式的证书)3、得到pem格式的证书之后&#xff…

Datapath综合代码规范(Verilog)

一、一般准则 1、有符号数运算 利用类型“signed”完成有符号数运算,而不是用无符号数模拟有符号数运算。这样可以得到更好的QoR。在资源报告中检查操作数的类型和大小。 2、符号/零扩展 尽量不要手动扩展。verilog利用signed/unsigned会自动完成扩展。这样代码可…

CMOS 图像传感器——Skipping 和 Binning 模式

在通常的CMOS读取方式中,由于像素读取规模的差异,不同的分辨率对应不同的帧率。在通道带宽固定的前提下,想要提高帧率就要考虑是否需要缩小视野(外圈裁切)。若不希望视野缩小,需要减少采样的分辨率。 常用的…

APB协议学习

APB(Advanced Peripheral Bus) 1、APB的概述与特点 APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无…

私有协议栈开发

通信协议从广义上区分,可以分为公有协议和私有协议。由于私有协议的灵活性,它往往会在某个公司或者组织内部使用,按需定制,也因为如此,升级起来会非常方便,灵活性好。绝大多数的私有协议传输层都基于TCP/IP…

数字图像处理——2D降噪

图像降噪处理主要分为2D(空域)与3D降噪(时域/多帧),而2D降噪由于相关的实现算法丰富,效果各异,有着丰富的研究价值。理解2D降噪算法的流程,也对其他的增强算法有很大的帮助&#xff…

项目开发(Require + E.js)

最近在做的几个项目,分别用了不同的框架跟方式,有个H5的项目,用了vue框架, 这个项目我还没有正式加入进去, 等手头的这个项目完成就可以去搞vue了, 现在手头的这个项目是一个招聘的项目, 用到了…

AHB协议学习

1. 简介 AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、A…

数字图像处理——引导滤波

一、概述 引导滤波是由何恺明等人于2010年发表在ECCV的文章《Guided Image Filtering》中提出的,后续于2013年发表。引导过滤器根据局部线性模型原理,通过考虑引导图像的内容来计算过滤输出,引导图像可以是输入图像本身或另一个不同的图像。具…

Ubuntu 18.04换国内源

2019独角兽企业重金招聘Python工程师标准>>> 参考文档: https://blog.csdn.net/zhangjiahao14/article/details/80554616 https://blog.csdn.net/xiangxianghehe/article/details/80112149 1.复制源文件备份,以防万一 我们要修改的文件是sour…

数字后端——布图规划

布图规划(floorplan)与布局(place)在芯片设计中占据着重要的地位,它的合理与否直接关系到芯片的时序收敛、布线通畅、电源稳定以及良品率。所以在整个芯片设计中,从布图规划到完成布局一般需要占据整个物理…

利用SSH传输文件

在linux下一般用scp这个命令来通过ssh传输文件。 1、从服务器上下载文件scp usernameservername:/path/filename /var/www/local_dir(本地目录) 2、上传本地文件到服务器scp /path/filename usernameservername:/path 例如scp /var/www/test.php root19…

App WebView实例化

a,高级设置里的环境变量 jdk的配置 b,下载Google的sdk,里面直接包含eclipse 1,新建一个项目 2,起个名字 3,设么走不做,next 4,只操作选择显示的三种方式 5,next什么都不做…

[动态代理三部曲:下] - 从动态代理,看Retrofit的源码实现

前言 关于动态代理的系列文章,到此便进入了最后的“一出好戏”。前俩篇内容分别展开了:从源码上,了解JDK实现动态代理的原理;以及从动态代理切入,学会看class文件结构的含义。 如果还没有看过这俩篇文章的小伙伴&#…

数字后端——电源规划

电源规划是给整个芯片的供电设计出一个均勻的网络,它是芯片物理设计中非常关键的一部分。电源规划在芯片布图规划后或在布图规划过程中交叉完成,它贯穿于整个设计中,需要在芯片设计的不同阶段对电源的供电网络进行分析并根据要求进行修改。,主…

逆向project实战--Acid burn

0x00 序言 这是第二次破解 crackme 小程序,感觉明显比第一次熟练。破解过程非常顺利,差点儿是分分钟就能够找到正确的 serial,可是我们的目标是破解计算过程。以下将具体介绍。 0x01 初次执行 刚開始拿到 crackme 先执行程序。看看有哪些明显…

PyCharm使用技巧(六):Regullar Expressions的使用

2019独角兽企业重金招聘Python工程师标准>>> PyCharm v2018.2最新版本下载 使用正则表达式查找和替换文件中的文本 示例代码 使用正则表达式查找和替换字符串 假设您想用扩展标记<title> </title>替换元素&#xff08;title&#xff09;中的属性&#x…