在KStream/KTable内连接以下消息序列:
table_evt_at_t1
连接触发器:
(stream_evt_at_t2、table_evt_at_t1)(stream_evt_at_t4、table_evt_at_t3)
到目前为止,一切正常。当我重置流应用程序(使用kafka-streams-application-reset.sh)并重放所有事件时,出现了意想不到的结果:
(stream_evt_at_t2、table_evt_at_t3)(stream_evt_at_t4、table_evt_at_t3)
Kafka Stream在处理事件时似乎没有考虑时间戳。它填充Ktable,然后处理KStream,获取两个KStream事件的Ktable(table_evt_at_t3)的最后一个值。
请注意,我正在使用Kafka Streams 2.3.1,一个自定义的TimestampExtractor和属性max.task.idle.ms=10*1000L
作为[KIP-353][1]建议
这是预期的行为吗?