RabbitMQ的基础理解

RabbitMQ的工作原理

       

  • Producer:消息生产者,发送消息       
  • Broker:消息队列服务进程,包括Exchange 和 Queue
  • Exchange:消息队列交换机,按照一定的规则将消息路由转发到某个队列
  • Queue: 消息队列,存储消息的队列
  • Consumer:消息消费者,接受消息

消息生产者发送消息的流程:

  1. Producer 和 Broker 建立 TCP 链接
  2. Producer 和 Broker 建立通道
  3. Producer 通过 通道 消息发送给 Broker ,由Exchange将消息接收进行转发
  4. Exchange 将消息转发到指定的Queue

消息消费者接受消息的流程:

  1. Consumer 和 Broker 建立 TCP 链接
  2. Consumer 和 Broker 建立通道
  3. Consumer 监听指定的 Queue
  4. 当有消息到达Queue时 Broker 会默认将消息推送给消费者
  5. 消费者接受消息
  6. 通过ack回复

消息确认机制(ACK)

        ACK分为两种情况:

  • 自动ACK:消息一旦被接收,消费者自动发送ACK
  • 手动ACK:消息接收后,不会发送ACK,需要手动调用

        如果对消息的重要性要求低,可以接受部分消息丢失,那么自动ACK会比较方便。

        如果对消息的重要性要求很高,不容丢失,那么最好在消费完成后手动ACK。

面试题:

        RabbitMQ是什么?

        RabbitMQ是实现了高级消息队列协议的开源消息代理软件,也称为面向消息的中间件。

         

        RabbitMQ的特点

        可靠性:会使用一些机制来保证消息可靠性,如持久化、传输确定和发布确认等

        扩展性:多个RabbitMQ节点可以组成一个集群,可以根据实际业务情况动态的扩展

        高可用性:可以在集群的机器上设置镜像,可以使的在部分节点出现问题的情况下队列依然可用

        灵活的路由:在消息进入队列之前,可以通过交换器来路由消息。

        管理界面:RabbitMQ提供了一个易用的用户界面,是的用户可以监控和管理消息

        如何避免消息堆积?

  1.    采用workqueue,多个消费者监听同一队列
  2.    接受消息以后,通过线程池,异步消费

        如果避免消息丢失?

  1.    消费者手动ACK,可以防止消费者丢失消息
  2.    可以将消息进行持久化,要将消息持久化,前提是:队列、exchange都持久化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值