消息中间件面试题

避免消息堆积

提高消费速率:
1、消费者集群
2、批量消费 比如一次获取原来的n条信息 可以比如字符串拼接啥的

保证消息不丢失

1、mq服务器端:持久化硬盘

2、生产者:ack消息确认机制 mq服务器端刷到硬盘后返回一个ack给生产者

如果mq服务器宕机了咋办? 生产者先把消息存进mysql或redis里 等mq启动后再次发送

3、消费者:确认消费成功 发送ack给mq服务器端,服务器端删除msg

保证消息顺序一致:

*问题背景:集群、多分区
让需要保持顺序的消息采用key%分区总数的方式 投入到同一个消费者

保证幂等(不重复消费)

保证消息不重复消费:
1、根据消息的全局id
2、db层面加唯一约束
3、重做表