通过Kafka Consumer Retries维护订购保证 [英] Maintain Ordering Guarantees With Kafka Consumer Retries

查看:16
本文介绍了通过Kafka Consumer Retries维护订购保证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为基于Kafka的数据处理管道中的消费者重试提出一个体系结构。我们正在使用Kafka的生产商和消费者,并正在考虑重试主题,如果他们在消费上出错,将发送哪些消息。将有使用者以特定的节奏运行这些重试主题。

我阅读了很多参考体系结构,但没有一个谈到如何在消息使用失败期间维护排序保证。让我举一个例子:

我们的Kafka消息包含有效负载,它有一个对象和一个操作类型(可以是创建/更新/删除)。我们在object_id上对消息进行分区,以确保对该对象的操作是有序的。但是,如果一条消息消费失败,您是否应该自动将后续的object_id消息标记为失败,甚至不尝试处理它们?你如何保持这种状态?

是否有解决此问题的参考体系结构?

推荐答案

是,您需要建立一种机制,在该机制中,如果具有相同对象ID的一条消息失败并进行重试,则具有相同对象ID的所有后续消息也将直接进行重试。

我建议使用缓存来协调这一点--每当消息需要重试时,递增对象id键。同样,每当成功使用重试主题中的消息时,都会递减密钥。

现在,您只需要在尝试消费消息之前检查是否存在Object_id对应的>0值的key,如果存在,则直接发送重试。

这篇关于通过Kafka Consumer Retries维护订购保证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆