博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ 三种Exchange
阅读量:6034 次
发布时间:2019-06-20

本文共 1803 字,大约阅读时间需要 6 分钟。

hot3.png

               

Direct Exchange – 处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记为“dog”的消息才被转发,不会转发dog.puppy,也不会转发dog.guard,只会转发dog。

21163812_mpZJ.png

Java代码  

Channel channel = connection.createChannel();  channel.exchangeDeclare("exchangeName", "direct"); //direct fanout topic  channel.queueDeclare("queueName");  channel.queueBind("queueName", "exchangeName", "routingKey");    byte[] messageBodyBytes = "hello world".getBytes();  //需要绑定路由键  channel.basicPublish("exchangeName", "routingKey", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);

Fanout Exchange – 不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的。
21163812_h2jC.png

Java代码  

Channel channel = connection.createChannel();  channel.exchangeDeclare("exchangeName", "fanout"); //direct fanout topic  channel.queueDeclare("queueName");  channel.queueBind("queueName", "exchangeName", "routingKey");    channel.queueDeclare("queueName1");  channel.queueBind("queueName1", "exchangeName", "routingKey1");    byte[] messageBodyBytes = "hello world".getBytes();  //路由键需要设置为空  channel.basicPublish("exchangeName", "", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);

Topic Exchange – 将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词。因此“audit.#”能够匹配 到“audit.irs.corporate”,但是“audit.*” 只会匹配到“audit.irs”。我在RedHat的朋友做了一张不错的图,来表明topic交换机是如何工作的:
21163812_h3PH.png

Java代码  

Channel channel = connection.createChannel();  channel.exchangeDeclare("exchangeName", "topic"); //direct fanout topic  channel.queueDeclare("queueName");  channel.queueBind("queueName", "exchangeName", "routingKey.*");    byte[] messageBodyBytes = "hello world".getBytes();  channel.basicPublish("exchangeName", "routingKey.one", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);

转载于:https://my.oschina.net/u/2326611/blog/607522

你可能感兴趣的文章
Android如何实现超级棒的沉浸式体验
查看>>
使用node打造自己的命令行工具方法教程
查看>>
Express代理中间件问题与解决方案
查看>>
||和&&返回什么?
查看>>
linux在文件中查找指定字符串,然后根据查找结果来做进一步的处理
查看>>
在Oracle中删除所有强制性外键约束
查看>>
dhcp
查看>>
【R】R语言使用命令行参数 - [编程技巧(Program Skill)]
查看>>
经典算法题每日演练——第二题 五家共井
查看>>
存储过程中拼接的变量和点的问题
查看>>
ASP.NET那点不为人知的事(一)
查看>>
HTML 表格
查看>>
VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三
查看>>
php 未实例化类调用方法的问题
查看>>
我对读计算机软件专业硕士的几点看法
查看>>
用JS写CSS
查看>>
TOJ4537: n阶行列式
查看>>
算法刷题笔记-stack-四则运算
查看>>
3.16
查看>>
Linux下arp用法
查看>>