java Kafka流转换器上下文。timestamp()未返回正确的时间戳
关于我的用例的一点背景:我必须将特定记录(由唯一类型标识)缓冲几秒钟,因为我需要随后发生的另一个事件的一些信息。第二个事件几乎每次都发生在5秒内。为此,我通过使用statestores实现了缓冲,其中我将第一条记录缓冲5秒钟。我将记录作为(key,Pair<;Value,T1>;)放入statestore其中T1是我处理该记录时的时间戳。如果我没有在5秒钟内获得后续记录,那么我只想转发这个等待记录。一旦我把这张唱片放进statestore。我运行了一个定时标点符号,在这个标点符号中,我转发了这5秒超时后过期的记录
为此,我使用了挂钟时间戳提取器。我通过处理器api在自定义转换器中完成所有这些。我试图通过调用上下文来获取时间戳(在我的示例中是T1)。时间戳()。然而,在这种情况下。transform方法中的timestamp()未返回当前系统时间戳。 这是transform方法中的一个日志
调试[19:51:33.815]-记录键=**值={**},时间戳=1621392502699
日志中的此时间戳来自上下文。TimeSTAMP()和它的值是星期三,2021年5月19日2:48:22.699上午,这是不同于当前系统,如在日志消息中看到的是19:51:33.815
我还在调用标点符号时捕获日志
这是来自标点方法的时间戳 在时间戳1621453893556处加标点。 这与当前系统时间匹配,即星期三,2021年5月19日7:51:下午33.556点/P>
我不太明白为什么会出现这种情况。从transform方法调用时,timestamp()不会返回当前系统时间,即使documentation表示此方法将返回timestamp提取器从ConsumerRecord提取的时间戳
因为没有返回的时间戳是正确的,所以记录在整个5秒钟内没有得到缓冲,并且在标点运行时作为一个标记发出
谢谢你的帮助
使用的版本为Kafka-Streams-2.3.1
共 (0) 个答案