我知道主题是一成不变的。
假设您的主题处于错误状态。乱序的数据部分,重复的记录等。清理该数据的过程是什么?这个过程如何影响下游消费者?
我看到几种不同的处理方式:
消费者不听第一个主题,而是听一个清理后的派生词。
设置主题版本,并使用应用的重复数据删除逻辑重写数据。然后让消费者更改他们收听的主题。但是后来我遇到了这样的情况,即记录被缓冲或与旧记录交错,而新记录继续进入。
如何处理这种情况?
答案 0 :(得分:0)
类似数据流体系结构的声音不是幂等的。数据永远不会乱序或被Kafka复制,生产者会遇到问题。 Kafka会自动从保留期后的主题中删除数据,因此如果您只担心现有数据,只需等到该时期进行清理即可。一旦Kafka删除了数据,任何读取延迟的消费者(即想从已删除的偏移量中读取数据)都必须从auto.offset.reset
或earliest
中设置latest
,否则消费者将发出{{1} }错误。
同时,如果您可以跳过记录并使用OffsetOutOfRange
开始轮询特定的偏移量/分区
解决方案将取决于您的业务逻辑和传入的数据模式,但是通过解决生产者问题而不是在消费者手中解决问题,您会变得更好。