kafka无序消息场景处理

wko9yo5t  于 2021-06-06  发布在  Kafka
关注(0)|答案(3)|浏览(362)

我在kafka消息处理中有一个场景,其中我得到3种类型的负载:
类别\u创建
文件夹\u创建
文章\u创建
我在db中输入
理想情况下,加载的顺序应该是:category\u create->folder\u create->article\u create,因为文件夹总是属于某个类别,而article总是属于某个文件夹。对于要处理的文件夹,文件夹的类别应已作为kafka消息接收。但是,在某些情况下,文件夹创建加载时间比类别创建时间早几毫秒。
在spring boot中,如果是folder\u create,我可以做什么来等待毫秒,以允许category\u create处理,然后处理folder\u create。
尝试在spring boot中使用@retry和@recover,但我猜这不适合这种情况。

vtwuwzda

vtwuwzda1#

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

q43xntqr

q43xntqr2#

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

gkn4icbw

gkn4icbw3#

使用者不能处理消息排序,它应该在生产者端处理

相关问题