SpringBoot学习-part59 RabbitMQ基本概念与消息分发策略

AMQP基本概念

AMQP(RabbitMQ)必须由三部分:交换器、队列和绑定
在这里插入图片描述

  • 消息(Message):由有效载荷和标签组成。其中有效载荷即为传输的数据。

  • 生产者(Producer):创建消息,发布到代理服务器(MessagerBroker)。

  • 代理服务器(MessageBroker):接收和发布消息的应用,RabbitMQServer就是消息代理服务器,其中概念包括很多。比如在RabbitMQ中包含:信道(channel)、队列(queue)、交换器(exchange)、路由键(routing
    key)、绑定(binding key)等。

    子概念

    • 信道(channel):应用程序(生产与/或消费)和大力服务器之间TCP连接内的虚拟连接,解决TCP连接数量,限制以及降低TCP连接代价。每个信道有一个ID,其概念与“频发多路复用”类似。
    • 队列(queue):消息最终到达队列中,等待消费者消费。使用“basic.consume”订阅可获得队列全部消息,“basic.get”订阅只能获得队列的一条消息(如果队列中存在消息)。如果无人订阅,消息将在队列中存储,等待订阅;如果多个消费者同时订阅该队列,消息将以自动轮询(round-robin)方式发送给消费者(Fanout Exchange,每个消费者只能获得队列中消息的子集)
    • 交换器(exchange):消息到达代理服务器的第一站,根据分发规则,匹配查询表中的(routing key)路由键(Fanout Exchange除外),分发消息到队列(queue)中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)。
    • 路由键(routing key):消息发送给交换器时,消息将拥有一个路由键(默认为空),交换器根据这个路由键将消息发送到匹配的队列中。
    • 绑定键(binding key):队列需要通过绑定键(默认为空)绑定到交换器上,交换器将消息的路由键与绑定队列的绑定建进行匹配,正确匹配的消息将发送到队列中。路由键是偏向生产的概念,而绑定键是偏向消费的概念。

消费者(consumer):连接到代理服务器,并订阅到队列(queue)上,代理服务器将发送给一个订阅的/监听的消费者,消费者只能接受消息的一部分:有效载荷(playload)!

AMQP中的消息路由

AMQP中消息的路由过程和JMS存在一些差别,AMQP中增加了Exchange和Binding角色。生产者发布消息到Exchange上,消息最终到达队列并被消费者接收,而Binding决定交换器的消息应该发送到哪个队列。

在这里插入图片描述

Exchange 类型分类

常用三种分发策略:direct、fanout、topic

  • 直连型-direct
    单播模式
    路由键如果和Biding中的键完全一致,则转发消息到对应队列。
    比如路由键为 emp 则不会转发其它的:比如emp.id或emp.salary等。
    在这里插入图片描述

  • 扇出型-fanout
    广播模式
    不会处理路由键,而是消息转发给所有绑定的队列。
    在这里插入图片描述

  • 话题型-topic
    匹配广播
    处理路由键和binding中的键时,采用模糊匹配方式,来决定转发到哪个消息队列。
    #匹配0个或多个单词
    *匹配一个单词

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值