【发布时间】:2018-10-08 02:26:55
【问题描述】:
大家好,我有一个关于 TimestampExtractor 和 Kafka Streams 的问题......
在我们的应用程序中可能会接收到乱序事件,因此我喜欢根据负载中的业务日期而不是它们放置在主题中的时间点来对事件进行排序。
为此,我编写了一个自定义 TimestampExtractor,以便能够从有效负载中提取时间戳。直到我在这里告诉的一切都运行良好,但是当我为这个主题构建 KTable 时,我发现我收到的事件发生了故障(从业务的角度来看,它不是最后一个事件,而是最后收到的)显示为对象的最后状态,而 ConsumerRecord 具有来自有效负载的时间戳。
我不知道认为 Kafka Stream 会使用 TimestampExtractor 解决这个乱序问题可能是我的错误。
然后在调试过程中,我看到如果 TimestampExtractor 返回 -1 作为结果,Kafka Streams 忽略了消息,并且 TimestampExtractor 还提供了最后接受的事件的时间戳,所以我构建了一个实现以下检查的逻辑(payloadTimestamp
我是否可以处理这样的逻辑或存在其他方法来处理 Kafka 流中的乱序事件....
谢谢解答..
【问题讨论】:
标签: apache-kafka apache-kafka-streams