RabbitMQ面试注意
端口:5672 页面访问:15672
1,MQ优缺点
优:异步 削峰 解耦
缺:系统复杂性提高,增加维护成本
2,如何保证消息不丢失
生产者-->交换机 confirm确认模式
交换机-->队列 return回退模式
队列-->消费者 basicAck 手动确认模式
3,队列中 消息大小是否有限制?数量是否有限制?
消息大小有限制 , 数量无限制
4,怎么保证幂等性(怎么保证消息不从重复消费)
幂等性的实质是:对于一个资源,不管你请求一次还是请求多次,对该资源本身造成的影响应该是相同的
幂等性问题通俗点讲就是保证数据不被重复消费,同时数据也不能少,也就是数据一致性问题
MQ的幂等性应该保障在消费端
1,全局唯一id + mysql / redis
消费者获取到消息后先根据id去查询redis/db是否存在该消息
如果不存在,则正常消费,消费完毕后写入redis/db
如果存在,则证明消息被消费过,直接丢弃
5,消息丢失问题

6,如何保证消息的顺序性
- RabbitMQ在单个队列内可以保证FIFO顺序。但如果有多个消费者,或者消息被路由到多个队列,就无法保证全局顺序。
- 解决方案: 要保证同一组有顺序的消息必须被发送到同一个队列。可以通过在发送时指定一个固定的路由键(如订单ID的哈希值),使其总是路由到同一个队列,并由单个消费者来消费。
7,消息堆积怎么办?
事前:
做好监控,提前扩容。
事中:
增加更多消费者,提升消费能力。
对消费者进行优化,提升处理速度(如批量处理、优化代码逻辑)。
事后:
编写临时程序,将堆积的消息转移到另一个容量更大的队列或Topic,再慢慢消费。
在极端情况下,可以丢弃非核心消息,或通过日志恢复数据。
日夜颠倒头发少 ,单纯好骗恋爱脑 ,会背九九乘法表 ,下雨只会往家跑 ,搭讪只会说你好 ---- 2050781802@qq.com