消息队列-RabbitMQ进阶基础
【摘要】 RabbitMQ的交换器类型?Exchange Types常用的类型有fanout、direct、topic、headers四种fanout广播消息路由规则:它会把所有发送到该路由(Exchange)的消息到所有与它绑定的队列(Queue),无需做任何判断,fanout类型是速度最快的。direct完全匹配路由规则:他会根据发送到路由时设置的路由键(RoutingKey)以及路由与队列绑定的...
RabbitMQ的交换器类型?
Exchange Types常用的类型有fanout、direct、topic、headers四种
fanout
广播消息路由规则:它会把所有发送到该路由(Exchange)的消息到所有与它绑定的队列(Queue),无需做任何判断,fanout类型是速度最快的。
direct
完全匹配路由规则:他会根据发送到路由时设置的路由键(RoutingKey)以及路由与队列绑定的绑定键(BindingKey)相匹配的队列中去。
举例说明:如果设置的路由规则是direct,生产者(Producer)发送到路由(Exchange)的路由键(RoutingKey)是warning则,队列会发送到Queue1和Queue2.
topic
模糊匹配路由规则:通过RoutingKey和BindingKey的模糊匹配进行消息发送。区别于direct的完全匹配。
匹配规则约定:
- RoutingKey和BindingKey以“.”分割的字符串,示例:com.hidden.client
- BindKey中可以存在两种特殊字符“*”和“#”,用户模糊匹配, “*”用于匹配一个单词,“#”用于匹配多个单词(可以是零个)
举例说明:如果路由设置的规则是topic,路由和队列中间的BindKey。
- 路由键为“com.rabbitmq.client”的消息会同时路由到Queue1和Queue2
- 路由键为“com.hiddent.client”的消息路由到Queue2中
- 路由键为"com.hidden.demo"的消息只会路由到Queue2中
- 路由键为"java.rabbitmq.demo"的消息只会路由到Queue1中
- 路由键为“java.util.concurrent”的消息会被丢弃或返回给生产者(需要设置mandatory参数)。
headers(不推荐)
header路由规则不依赖于路由键。而是根据消息内容中的headers的属性进行匹配。需要队列和路由绑定时指定一组“键值对“”。发送消息到路由器时,RabbitMQ会获取到该消息的headers的“键值对”,如果和绑定指定的一组键值对完全匹配,则会路由到该队列。性能较差,不推荐
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)