消息队列-RabbitMQ进阶基础

举报
object 发表于 2024/04/03 18:10:54 2024/04/03
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。