猿问

卡夫卡无序消息场景处理

我在kafka消息处理中有一个场景,其中我得到了3种类型的负载:

  1. category_create

  2. folder_create

  3. article_create

为此,我在DB中输入

理想情况下,加载应按顺序进行:category_create -> folder_create -> article_create,因为文件夹始终属于某个类别,文章始终属于某个文件夹。对于folder_create处理文件夹的类别,应该已经作为kafka消息接收。但是,在某些情况下,folder_create负载在category_create之前几毫秒。

我可以在弹簧靴中做些什么来等待毫秒,以防folder_create允许category_create处理,然后处理folder_create。

尝试在弹簧靴中使用@Retry和@Recover,但我想这不适合这种情况。


慕田峪4524236
浏览 73回答 3
3回答

MM们

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

开满天机

消费者不能保证订单,它应该由生产者来完成。我们遇到了类似的情况,我们在数据库中创建了一个临时表来存储消息,直到我们收到所需的消息。然后处理数据库中的记录并将其删除。

大话西游666

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

相关分类

Java
我要回答