栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

消息队列—Kafka的顺序消费

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

消息队列—Kafka的顺序消费

背景:

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

解决方案:

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

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

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

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

参考:

消息队列经典十连问

Kafka 顺序消费方案

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/924319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号