RabbitMQ学习知识点

RabbitMQ


一、rabbitMQ 的使用场景
  1. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。
  2. 多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松耦合的接口。
  3. 应用内的同步变异步,比如订单处理,就可以由前端应用将订单信息放到队列,后端应用从队列里依次获得消息处理,高峰时的大量订单可以积压在队列里慢慢处理掉。由于同步通常意味着阻塞,而大量线程的阻塞会降低计算机的性能。
  4. 消息驱动的架构(EDA),系统分解为消息队列,和消息制造者和消息消费者,一个处理流程可以根据需要拆成多个阶段(Stage),阶段之间用队列连接起来,前一个阶段处理的结果放入队列,后一个阶段从队列中获取消息继续处理。
  5. 应用需要更灵活的耦合方式
  6. 跨局域网、甚至跨城市的通讯
二、rabbitMQ 有哪些重要角色

​ 生产者、消费者、代理

  • 生产者:消息的创建者,负责创建和推送数据到消息服务器
  • 消费者:消息的接收方,用于处理数据和确认消息
  • 代理:就是RabbitMQ 本身,用于扮演 “快递” 角色,本身不产生消息,只负责传递消息。
三、rabbitMQ 有哪些重要的组件
  • connectionFactory(连接管理器):应用程序与Rabbit 之间建立的管理器,程序代码中使用。
  • Channel(信道):消息推送使用的通道
  • Exchange(交换器):用于接受、分配消息
  • Queue(队列):用于存储生产者的消息
  • RoutingKey(路由键):用于把生产者的数据分配到交换器上
  • BindingKey(绑定键):用于把交换器的消息绑定到队列上
四、rabbitMQ 中 vhost 的作用

​ vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、绑定、交换器和权限控制;

​ vhost通过在各个实例间提供逻辑上分离,允许你为不同应用程序安全保密地运行数据;

​ 当在RabbitMQ中创建一个用户时,用户通常会被指派给至少一个vhost,并且只能访问被指派vhost内的队列、交换器和绑定,vhost之间是绝对隔离的。

五、rabbitMQ 的消息是怎么发送的
  1. 客户端必须连接到 rabbitMQ 服务器上才能发布和消费消息
  2. 客户端和 rabbit server 之间会创建一个 tcp 连接,一旦 tcp 打开并通过认证
  3. 你的客户端和 rabbitMQ 就创建了一条 amqp 信道,信道是创建在“真实” tcp 上的虚拟连接
  4. amqp 命令都是通过信道发送出去的,每个信道都会有一个唯一的 id ,不论是发布信息还是订阅队列都是通过信道完成的。
六、rabbitMQ 怎么保证消息的稳定性

​ 通过事务,设置为confirm(确认)模式

七、rabbitMQ 怎么避免消息丢失
  • 消息持久化
  • ACK确认机制
  • 设置集群镜像模式
  • 消息补偿机制
八、要保证消息持久化成功的条件有哪些?
  • 声明队列必须设置持久化 durable 设置为 true

  • 消息推送投递模式必须设置持久化,deliveryMode 设置为 2(持久)

  • 消息已经到达持久化交互器

  • 消息已经到达持久化队列

    以上四个条件满足才能保证消息持久化成功

九、rabbitMQ 持久化有什么缺点

​ 缺点就是降低了服务器的吞吐量,因为使用的是磁盘而不是内存存储,从而降低了吞吐量

十、rabbitMQ 怎么实现延迟消息队列

​ 通过消息过期后进入死信交换器,再由交换器转发到延迟消费队列,实现延迟功能;

十一、rabbitMQ 集群有什么作用
  1. 高可用:某个服务器出席那问题,整个 RabbitMQ 还可以继续使用
  2. 高容量:集群可以承载更多的信息量
十二、rabbitMQ 节点的类型有哪些
  1. 磁盘节点:消息会存储到磁盘
  2. 内存节点:消息存内存上,重启服务器消息丢失,但性能高于磁盘类型
十三、rabbitMQ 每个节点是其他节点的完整拷贝吗?

​ 不是,原因有二:

  1. 存储空间考虑:如果每个节点都拥有所有队列的完全拷贝,这样新增节点不但没有新增存储空间,反而会增加更多冗余数据
  2. 性能考虑:如果每条消息都需要完整拷贝到每一个集群节点,那新增节点并没有提升处理消息的能力,最多是保持和单节点相同的性能甚至是更糟。
十四、rabbitMQ 集群中唯一一个磁盘节点崩溃了会发生什么情况

​ 崩溃后,集群可以保持运行,但是不能更改任何东西。

十五、rabbitMQ 对集群节点停止顺序有要求吗?

​ 对顺序有要求,应该先关闭内存节点,再关闭磁盘节点,如果顺序相反的话,可能会造成消息丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值