猿问

Kafka无序消息场景处理

我在 kafka 消息处理中有 3 种类型的负载:

  1. 类别创建

  2. 文件夹创建

  3. article_create

我为此在数据库中输入

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

在 spring boot 中我可以做什么来等待几毫秒,以防 folder_create 允许 category_create 处理然后处理 folder_create。

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


手掌心
浏览 153回答 3
3回答

慕虎7371278

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

互换的青春

保证消费者以附加顺序消费消息。在您的情况下,您应该考虑安全生产者按顺序发送消息。为了实现这一点,最好让“max.in.flight.requests.per.connection=1”、“acks=all”另一个是“enable.idempotence=true”。但是那些可能会在吞吐量上咬你一口。

桃花长相依

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

相关分类

Java
我要回答