RabbitMQ面试注意

RabbitMQ面试注意

端口:5672 页面访问:15672

1,MQ优缺点

优:异步 削峰 解耦

缺:系统复杂性提高,增加维护成本

2,如何保证消息不丢失

生产者-->交换机 confirm确认模式

交换机-->队列 return回退模式

队列-->消费者 basicAck 手动确认模式

3,队列中 消息大小是否有限制?数量是否有限制?

消息大小有限制 , 数量无限制 

4,怎么保证幂等性(怎么保证消息不从重复消费)

幂等性的实质是:对于一个资源,不管你请求一次还是请求多次,对该资源本身造成的影响应该是相同的
幂等性问题通俗点讲就是保证数据不被重复消费,同时数据也不能少,也就是数据一致性问题
MQ的幂等性应该保障在消费端
1,全局唯一id + mysql / redis
    消费者获取到消息后先根据id去查询redis/db是否存在该消息
    如果不存在,则正常消费,消费完毕后写入redis/db    
    如果存在,则证明消息被消费过,直接丢弃

5,消息丢失问题

img

6,如何保证消息的顺序性

  • RabbitMQ在单个队列内可以保证FIFO顺序。但如果有多个消费者,或者消息被路由到多个队列,就无法保证全局顺序。
  • 解决方案: 要保证同一组有顺序的消息必须被发送到同一个队列。可以通过在发送时指定一个固定的路由键(如订单ID的哈希值),使其总是路由到同一个队列,并由单个消费者来消费。

7,消息堆积怎么办?

事前:
     做好监控,提前扩容。
事中:
     增加更多消费者,提升消费能力。
     对消费者进行优化,提升处理速度(如批量处理、优化代码逻辑)。
事后:
     编写临时程序,将堆积的消息转移到另一个容量更大的队列或Topic,再慢慢消费。
     在极端情况下,可以丢弃非核心消息,或通过日志恢复数据。

日夜颠倒头发少 ,单纯好骗恋爱脑 ,会背九九乘法表 ,下雨只会往家跑 ,搭讪只会说你好 ---- 2050781802@qq.com

×

喜欢就点赞,疼爱就打赏

相册 说点什么 简历