实际业务处理 Kafka 消息丢失、重复消费和顺序消费的问题

Java65

消息丢失,消息重复消费,消息顺序消费等问题是我们使用 MQ 时不得不考虑的一个问题,下面我结合实际的业务来和你分享一下解决方案。

比如我们使用 Kakfa 时,以下场景都会发生消息丢失:

  • producer -> broker (生产者生产消息)
  • broker -> broker (集群环境,broker 同步给其他 broker)
  • broker -> consumer (消费者消费消息)

解决方案也很简单,设置 acks(消息确认机制) retries(重试机制) factor(设置 partition 数量)...

一般来说,最常见的消息丢失场景就是: consumer 消费消息

要保证 consumer 消费消息时不丢失消息,必须使用 手动提交 ack

我们业务是这样实现的:

要解决消息重复消费,也就是要实现 幂等(幂等就是:多次请求,但结果保持不变,举一个例子你就明白了: 在 http 中,你发送同一个 get 请求,无论发送多少次,返回结果都是一样的

回到我们的业务场景上,我以处理订单消息为例:

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长