RabbitMQ四大核心---尚硅谷学习笔记

RabbitMQ四大核心---尚硅谷学习笔记,第1张

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),并从这些上游队列中获取消息以满足本地消费者消费消息的需求。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5678797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存