为了账号安全,请及时绑定邮箱和手机立即绑定

卡夫卡无序消息场景处理

卡夫卡无序消息场景处理

慕田峪4524236 2022-08-03 10:25:36
我在kafka消息处理中有一个场景,其中我得到了3种类型的负载:category_createfolder_createarticle_create为此,我在DB中输入理想情况下,加载应按顺序进行:category_create -> folder_create -> article_create,因为文件夹始终属于某个类别,文章始终属于某个文件夹。对于folder_create处理文件夹的类别,应该已经作为kafka消息接收。但是,在某些情况下,folder_create负载在category_create之前几毫秒。我可以在弹簧靴中做些什么来等待毫秒,以防folder_create允许category_create处理,然后处理folder_create。尝试在弹簧靴中使用@Retry和@Recover,但我想这不适合这种情况。
查看完整描述

3 回答

?
MM们

TA贡献1886条经验 获得超2个赞

消费者无法处理消息排序,应该在生产者端处理


查看完整回答
反对 回复 2022-08-03
?
开满天机

TA贡献1786条经验 获得超13个赞

消费者不能保证订单,它应该由生产者来完成。

我们遇到了类似的情况,我们在数据库中创建了一个临时表来存储消息,直到我们收到所需的消息。然后处理数据库中的记录并将其删除。


查看完整回答
反对 回复 2022-08-03
?
大话西游666

TA贡献1817条经验 获得超14个赞

保证使用者按追加顺序使用消息。在你的例子中,你应该考虑确保生产者按顺序发送消息。为了实现这一点,最好让“max.in.flight.requests.per.connection=1”,“acks=all”另一个是“enable.idempotence=true”。但这些可能会在吞吐量上咬你。


查看完整回答
反对 回复 2022-08-03
  • 3 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信