我使用的是Kafka Streams API(KTable,GlobalKTable ..)。我正在使用KStreams消费Kafka主题。 我需要根据某些配置过滤掉一些传入的Kafka事件,并在配置更改后再处理它们。主题的持久性限制至少为7天。以下是要求:
键值状态
K1 V1已处理
K2 V2未处理(基于某些业务逻辑)
K3 V3已处理
K4 V4已处理
K1 V5已处理 ------>当前抵消< --------
现在我想再次处理消息(K2,V2)。我试图利用Ktables。但是,不能成功。既然,我对这个概念比较陌生,不确定KStream,KTable就能满足这个要求。
答案 0 :(得分:0)
看起来您遇到了一些问题,其中某些消息无法处理“'第一次遇到时,你想回来并在以后的时间处理它们。
脑海中浮现的唯一解决方案是将此类消息转发到另一个主题以供以后处理(branch
函数可能在这里有用),从而允许处理主流以线性方式继续。
您需要使用自定义处理器来处理延迟主题,该主题可以选择休眠一段时间,或者使用其他逻辑来确定何时处理消息。
但是,这种方法可能仅适用于未处理的消息后来可以按照它们第一次遇到的相同顺序处理的情况。如果他们不这样做,那么您可能会遇到一些问题,其中可处理消息位于延迟队列中的不可处理消息之后。您可以绕过这个超时,之后仍然无法处理消息回到主题的末尾。但这一切都取决于你的用例。