消息中间件常见问题总结

94 阅读1分钟

1.重复消费问题如何解决?

  • 设置数据库业务唯一id
  • 利用redis的原子性操作,把业务主键id,setnx到redis,set成功则消费

2.如何防止消息丢失?

  • 发送者丢消息:kafka主从切换同步不及时就会丢消息,设置ACK=ALL+重试可以解决
  • 消费者丢消息:kafka为了提高性能先commit再处理业务,业务处理失败则会丢消息,先保存数据库再commit再处理业务可以解决。

3.秒杀场景消息积压如何解决?

  • kafka可以通过消费者把消息转发到多个不同分区,然后开多个消费者分别消费不同的分区
  • rabbitmq直接开多个消费者消费

4.顺序消费

  • kafka分区支持顺序消费