1.RabbitMQ 怎么保证消息的稳定性?
- 提供了事务的功能
- 通过将 Channel 设置为 confirm(确认)模式
2.RabbitMQ 怎么避免消息丢失?
- 把消息持久化磁盘,保证服务器重启消息不丢失
- 每个集群中至少有一个物理磁盘,保证消息落入磁盘
3.要保证消息持久化成功的条件有哪些?
- 声明队列必须持久化 durable 设置为 true
- 消息推送投递模式必须持久化,deliveryMode 设置为2(持久)
- 消息已经到达持久化交换器
- 消息已经到达持久化队列
以上四个条件都满足才能保证消息持久化成功
4.RabbitMQ 持久化有什么缺点?
持久化的缺点就是降低了服务器的吞吐量,因为使用的是磁盘而非内存存储,从而降低了吞吐量,可尽量使用SSD 硬盘来缓解吞吐量的问题。
5.RabbitMQ 有几种广播类型?
- direct(默认方式):最基础最简单的方式,发送方把消息发送给订阅方,如果有多个订阅者,默认采取轮询的方式进行消息发送。
- headers:与 direct 类似,只是性能很差,此类型几乎用不到
- fanout:分发模式,把消费者分发给所有订阅者
- topic:匹配订阅模式,使用正则表达式匹配到消息队列,能匹配到的都能接收到。
6.RabbitMQ 怎么实现延迟消息队列?
两种方式:
- 通过消息过期后进入死信交换器,再由交换器转发大延迟消费队列,实现延迟功能
- 使用 RabbitMQ-delayed-message-exchange 插件实现延迟功能