RabbitMQ的消息如何实现路由

RabbitMQ的消息如何实现路由

工作机制

RabbitMQ是一个基于AMQP协议实现的一个分布式消息中间件,AMQP的一个具体工作机制非常简单:
在这里插入图片描述
生产者把消息发送到RabbitMQ的Broker上的一个Exchange交换机上,然后一个Exchange交换机把收到的消息根据路由的规则发送到绑定的队列里面。最后把这个消息投递给订阅了这个队列的消费者,从而去实现消息的一个异步通讯。

其中Exchange是一个消息交换机,它里面定义了消息的路由规则。也就是说这个消息路由到哪个队列,然后Queue表示这个消息一个载体,每个消息可以根据路由规则路由到一个或者多个Queue里面。

而关于消息的一个路由机制,核心的组件是Exchange,它负责接收生产者的消息,然后把消息路由到消息队列里面。

BindingKey

消息路由规则是由ExchangeType和Binding来决定的。Binding表示建立Queue和Exchange之间的一个绑定关系。每个绑定关系会存在一个BindingKey,通过这种方式相当于在Exchange里面去建立了一个路由关系表。
在这里插入图片描述

RoutingKey

生产者在发送消息的时候需要声明一个routingKey。Exchange拿到routingKey以后,根据routingKey和路由表里面的BindingKey进行一个匹配,匹配的方式是根据ExchangeType来决定的。
在这里插入图片描述

Exchange Type

在RabbitMQ中有三种类型的Exchange type,分别是direct、fanout和topic:

  1. direct表示完整的匹配,也就是说routing和Bingding Key完全一致,相当于点对点的发送。
  2. fanout表示广播机制,这种方式不会基于Routing Key来进行匹配,而是把消息广播到当前Exchange上面的所有队列上。
  3. topic表示正则表达式匹配。它会根据routing key使用正则表达式去匹配BindingKey。符合匹配规则的Queue都会收到这个消息。

参考资料RabbitMQ的消息如何实现路由

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值