MQ面试相关
MQ选型
中间件 | 过期特性 | 重试机制 | 死信队列 | 延迟队列 | 批量投递 |
---|---|---|---|---|---|
RabbitMQ | ✅ | ✅重试计数机制 | ✅ | ||
Kafka | ✅ | ||||
RocketMQ | ✅重试队列 | ✅ | ✅ |
过期特性:推送消息的时候携带过期时间,在队列中消息过期之后,会将过去消息放到死信队列,消费者将无法消费;
延迟消息:只有时间到了指定时间才能被消费者消费到,其实MQ做法就是在消息未到消费时间的时候,消息所在的队列在一个临时队列。
MQ可靠性
投递可靠性
投递之后消息需要mq Server 给生产者ACK
像Rocket使用的半消息回查机制
保存的可靠性
磁盘保存,异步刷盘
从节点备份 副本同步写,副本强一致
消费的可靠性
消费ACK确认
- 前置确认:会在消费的过程中,可能因为消费者的宕机,导致丢失消息,可以考虑使用事务消息表,上下游记录状态
- 后置消费:在消费的过程中可能执行到了中间的某一部分逻辑,此时消费者宕机,此时可能导致重复消费问题,消费者下游业务需要整体保证消息消费的幂等问题。