当前位置:   article > 正文

RabbitMQ四大核心---尚硅谷学习笔记_rabbitmq中有哪些核心的对象

rabbitmq中有哪些核心的对象

1、生产者

  • 产生数据发送消息的程序是生产者。

2、消费者

  • 消费者大多时候是一个等待接收消息的程序。
  • 请注意生产者,消费者和消息中间件很多时候并不在同一机器上。
  • 同一个应用程序既可以是生产者又是可以是消费者。

在这里插入图片描述


3、交换机

  • 交换机是RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息
    推送到队列中。

  • 交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定。

  • 绑定(bindings):

    • 在这里插入图片描述
  • 交换机类型

    • 1、无名队列(名字设为空串)

      • 在这里插入图片描述
    • 2、临时队列(随机名称的队列)

      • String queueName = channel.queueDeclare().getQueue();
    • 3、Fanout (扇出交换机)

      • 它是将接收到的所有消息广播到它知道的所有队列中。不论你设置的路由键 是什么。
        • channel.exchangeDeclare(EXCHANGE_NAME, "fanout");
        • channel.queueBind(queueName, EXCHANGE_NAME, "binding");
      • 在这里插入图片描述
    • 4、Direct(直接交换机)

      • producer(生产者)投递的消息被DirectExchange (交换机)转发到通过routingkey绑定到具体的某个Queue(队列),把消息放入队列,然后Consumer从Queue中订阅消息。
      • 在这里插入图片描述
    • 多重绑定

      • 在这里插入图片描述

      • 在这里插入图片描述
      • 因为routingkey一样,故而虽然交换机类型为direct,但发挥了Fanout交换机的作用
  • 5、Topics 主题交换机

    • 在这里插入图片描述
    • 在这里插入图片描述
      在这里插入图片描述
    • 6、Federation Exchange 联邦见换机
      • 将业务(Client 深圳)部署到北京的机房可以解决这个问题,但是如果(Client 深圳)调用的另些服务都部署在深圳,那么又会引发新的时延问题,总不见得将所有业务全部部署在一个机房,那么容灾又何以实现?
      • 这里使用Federation 插件就可以很好地解决这个问题.

4、队列

  • 队列是存储消息的数据结构。
  • 队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。
  • 许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。
  • 队列类型:
    • 1、普通队列

      • 遵循先进先出原则
    • 2、死信队列

      • 无法被消费的消息进入的队列。
      • 某些时候由于特定的原因导致queue 中的某些消息无法被消费,这样的消息如果没有
        后续的处理,就变成了死信,有死信自然就有了死信队列。
      • 死信队列来源:
        • 消息TTL 过期
        • 队列达到最大长度(队列满了,无法再添加数据到mq 中)
        • 消息被拒绝(basic.reject 或basic.nack)并且requeue=false.
    • 3、延迟队列(利用死信队列实现、利用插件实现)

      • 延时队列就是用来存放需要在指定时间被处理的元素的队列。
      • 需要在某个事件发生之后或者之前的指定时间点完成某一项任务。
      • 在这里插入图片描述
    • 4、优先级队列

      • 在这里插入图片描述
      • 在这里插入图片描述
    • 5、惰性队列

      • 惰性队列会尽可能的将消息存入磁盘中,而在消费者消费到相应的消息时才会被加载到内存中。
    • 6、镜像队列

      • 如果RabbitMQ 集群中只有一个Broker 节点,那么该节点的失效将导致整体服务的临时性不可用,并且也可能会导致消息的丢失。
      • 引入镜像队列(Mirror Queue)的机制,可以将队列镜像到集群中的其他Broker 节点之上,如果集群中的一个节点失效了,队列能自动地切换到镜像中的另一个节点上以保证服务的可用性。
    • 7、Federation Queue联邦队列

      • 联邦队列可以在多个Broker 节点(或者集群)之间为单个队列提供均衡负载的功能。一个联邦队列可以连接一个或者多个上游队列(upstream queue),并从这些上游队列中获取消息以满足本地消费者消费消息的需求。
      • 在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/903668
推荐阅读
相关标签
  

闽ICP备14008679号