Apache kafka Kafka Streams windowedBy在指定时间后不返回
我的要求是对进入卡夫卡主题的消息列表进行分组,这些消息具有要分组的类似键,并且该分组必须在5秒的窗口时间内进行。因此,我的应用程序应该每5秒返回一次分组的元素。下面是我写的应用程序。但下面代码的问题是,它不会在5秒后返回事件组,而是在5秒后返回,但返回得很晚,比如15秒或30秒或更长时间Apache kafka Kafka Streams windowedBy在指定时间后不返回,apache-kafka,stream,delay,Apache Kafka,Stream,Delay,我的要求是对进入卡夫卡主题的消息列表进行分组,这些消息具有要分组的类似键,并且该分组必须在5秒的窗口时间内进行。因此,我的应用程序应该每5秒返回一次分组的元素。下面是我写的应用程序。但下面代码的问题是,它不会在5秒后返回事件组,而是在5秒后返回,但返回得很晚,比如15秒或30秒或更长时间 KStream<String, String> source = builder .stream(sourceTopic, Consumed.with(Serdes.String(), Se
KStream<String, String> source = builder
.stream(sourceTopic, Consumed.with(Serdes.String(), Serdes.String()))
.filter((key, value) -> Objects.nonNull(value));
final KTable<Windowed<String>, List<String>> aggTable = source
.groupByKey(Serialized.with(Serdes.String(), new JsonSerde<>(String.class, objectMapper)))
.windowedBy(TimeWindows.of(TimeUnit.SECONDS.toMillis(5))))
.aggregate(List<String>::new, (key, value, aggregater) -> {
aggregater.add(value);
return aggregater;
},
Materialized.<String, List<String>, WindowStore<Bytes, byte[]>>as("stateStore")
.withValueSerde(newStatusEventHolderJsonSerde()));
KStream source=builder
.stream(sourceTopic,consumered.with(Serdes.String(),Serdes.String()))
.filter((键,值)->Objects.nonNull(值));
最终KTable aggTable=源
.groupByKey(序列化的.with(Serdes.String(),新的JsonSerde(String.class,objectMapper)))
.windowedBy(TimeWindows.of(TimeUnit.SECONDS.toMillis(5)))
.aggregate(列表::新建,(键、值、聚合器)->{
聚合器。添加(值);
返回聚合器;
},
具体化。作为(“stateStore”)
.withValueSerde(newStatusEventHolderJsonSerde());
您能告诉我们我们是否需要进行任何额外的编码以使流在指定的超时后立即返回吗