消息队列—Kafka的顺序消费

消息队列—Kafka的顺序消费,第1张

背景:

下单生成一条消息,付款生成一条消息,下单消息和付款消息都封装为同样的JSON格式,订阅Kafka同一个topic,现在要求下单和付款有顺序性。

解决方案:

发送消息的时候下单消息和付款消息指定同样的partitionKey,此时Kafka经过hash运算,同一笔订单的下单消息和付款消息都在会落在同一个Partition中。此时可以满足先执行下单再执行付款。

如果消费者开启了线程池利用多线程处理,此时又可能出现先付款再消费的情况,此时可以利用Map缓存来解决问题。

获取消息,如果是下单消息,执行下单 *** 作后,执行成功后写入记录到数据库,然后会去Map缓存里查有没有对应的付款消息,有就继续执行对应的付款 *** 作。

获取消息,如果是付款消息,此时先查询数据库有没有下单执行成功的记录,有就执行付款,没有此时就会将付款消息写入Map缓存,等对应的下单消息处理完,后面再处理。

参考:

消息队列经典十连问

Kafka 顺序消费方案

使用弱引用实现细粒度锁_方片龙的博客-CSDN博客_使用弱引用实现细粒度锁

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1294903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存