RabbitMQ面试题
消息队列面试题
RabbitMQ的应用场景
1 | 1,异步消息的传递,错峰削骨,我项目中的先处理抢购成功的消息,再异步处理订单的消息 |
RabbitMQ如何保证消息的连续性
1 | 1,消息确认机制:confirm |
为什么要用MQ
1 | 核心:解耦、异步、削峰 |
MQ优缺点
1 | 优点上面已经说了:解耦、异步、削峰 |
如何保证高可用
1 | RabbitMQ是基于主从做高可用性的,RabbitMQ有三种模式:单机模式、普通集群模式、镜像集群模式。 |
如何保证消息的可靠传输,消息丢失怎么办
1 | 首先这个消息丢失,有三处都可能发生 |
消息的顺序性
1 | 拆分多个 Queue,每个 Queue一个 Consumer;或者就一个 Queue 但是对应一个 Consumer,然后这个 Consumer 内部用内存队列做排队,然后分发给底层不同的 Worker 来处理。 |
大量消息在MQ里长时间积压,该如何解决?
1 | 一般这个时候,只能临时紧急扩容了,具体操作步骤思路如下 |
MQ中规定消息过期失效了怎么办?
1 | 如果使用的是RabbitMQ,RabbitMQ是可以设置过期时间的(TTL)。如果消息在queue中积压超过一定时间就会被RabbitMQ给清理掉,这个数据就没了。此时的问题就不是数据大量积压在MQ里,而是大量的数据会直接搞丢。这个情况下,解决方案就不是增加consumer消费积压的信息了,而是需要批量重导,当大量积压的时候,直接将数据写到数据库,等过了高峰期之后在将这批数据一点一点查出来,重新写入到MQ中,将丢的数据补回来。 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 方圆的博客!