Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在禁止窗口KTable的输出时,如何正确实现缓冲区配置?_Java_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Java 在禁止窗口KTable的输出时,如何正确实现缓冲区配置?

Java 在禁止窗口KTable的输出时,如何正确实现缓冲区配置?,java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,我有一个窗口化的KTable按预期工作,但每次收到新值时它都会输出。我找到了.suppress操作符,它完全符合我的要求:只在时间窗口结束时输出结果。我已将grace值添加到我的TimeWindow,但无法获取.suppress以使用带窗口的KTable 在阅读时,我觉得untilwindowclose是抑制接口的一种方法,这意味着我不能实例化supprested对象,对吗?我不知道如何以这种方式实现接口(在带窗口的KTable上的.suppress参数中) 我觉得我错过了一些愚蠢的事情,但我已

我有一个窗口化的
KTable
按预期工作,但每次收到新值时它都会输出。我找到了
.suppress
操作符,它完全符合我的要求:只在时间窗口结束时输出结果。我已将
grace
值添加到我的
TimeWindow
,但无法获取
.suppress
以使用带窗口的
KTable

在阅读时,我觉得
untilwindowclose
是抑制接口的一种方法,这意味着我不能实例化
supprested
对象,对吗?我不知道如何以这种方式实现接口(在带窗口的
KTable
上的
.suppress
参数中)

我觉得我错过了一些愚蠢的事情,但我已经找了又找,找不出答案。有什么想法吗

TimeWindows window = TimeWindows.of(Duration.ofMinutes(1)).grace(Duration.ofSeconds(10));

final KTable<Windowed<String>, GenericRecord> joinedKTable = groupedStream
    .windowedBy(window)
    .reduce(new Reducer<GenericRecord>() {
        @Override
        public GenericRecord apply(GenericRecord aggValue, GenericRecord newValue) {
            //reduce code
        }
    })
    .suppress(Suppressed.untilWindowCloses(unbounded())); //need help here
TimeWindows window=TimeWindows.of(持续时间分钟(1)).grace(持续时间秒(10));
final KTable joinedKTable=groupedStream
.windowedBy(窗口)
.减速器(新减速器(){
@凌驾
公共GenericRecord apply(GenericRecord aggValue、GenericRecord newValue){
//减少代码
}
})
.suppress(Suppressed.untilwindowclose(unbounded())//这里需要帮助吗

我正在使用Eclipse,它告诉我“方法unbounded()未定义。”我做错了什么?

您需要静态导入或限定引用

import static org.apache.kafka.streams.kstream.Suppressed.BufferConfig.unbounded;


您需要静态导入或限定引用

import static org.apache.kafka.streams.kstream.Suppressed.BufferConfig.unbounded;


谢谢你的回复。我尝试了第二种方法,得到
对接口静态方法的引用只允许在源代码级别1.8或更高级别上使用。我查了一下,上面说你需要JDK 8。当我执行
java-version
时,我得到了
openjdk版本“1.8.0_191”
。您需要在Eclipse中找到适当设置源代码级别的选项。我已经有几年没有使用Eclipse了,但是它可以在IntelliJ的项目结构下使用。谢谢你的帮助。我想我在项目>属性>Java编译器>编译器遵从性级别下找到了它。如果我只是从命令行运行它,它会使用我安装的JDK吗?谢谢你的回复。我尝试了第二种方法,得到
对接口静态方法的引用只允许在源代码级别1.8或更高级别上使用。我查了一下,上面说你需要JDK 8。当我执行
java-version
时,我得到了
openjdk版本“1.8.0_191”
。您需要在Eclipse中找到适当设置源代码级别的选项。我已经有几年没有使用Eclipse了,但是它可以在IntelliJ的项目结构下使用。谢谢你的帮助。我想我在项目>属性>Java编译器>编译器遵从性级别下找到了它。如果我只是从命令行运行它,它会使用我安装的任何JDK吗?请注意,2.1.x和2.2.x中的
suppress()
中存在错误,如果使用
suppress()
,您应该使用
2.3.0
。您能解释一下这些是什么吗?我正在5.1.2版上使用Confluent的平台。不确定对应于哪个版本的KStreams。这是AK2.1.1——您应该使用CP5.3.0。(cf)请注意,2.1.x和2.2.x中的
suppress()
中存在缺陷,如果使用
suppress()
,您应该使用
2.3.0
。您能解释一下这些缺陷是什么吗?我正在5.1.2版上使用Confluent的平台。不确定对应于哪个版本的KStreams。这是AK2.1.1——您应该使用CP5.3.0。(比照)