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
Apache kafka Kafka流处理API批提交(基于消息数)_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Apache kafka Kafka流处理API批提交(基于消息数)

Apache kafka Kafka流处理API批提交(基于消息数),apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我使用的是Kafka处理器API,我不想只使用基于时间的方法来决定何时在任务中提交处理过的消息,但我会根据处理过的消息的数量或超时来完成。 有什么方法可以在Java中实现吗?处理器API允许您通过ProcessorContext\commit()来“请求”提交。调用此方法,Kafka Streams将尽快提交。这应该允许您实现一些处理器内部计数器,并在此计数器中调用commit()base 此外,您可以使用there配置提交间隔,也可以通过将其设置为Long.MAX\u VALUE来有效地禁用它

我使用的是Kafka处理器API,我不想只使用基于时间的方法来决定何时在任务中提交处理过的消息,但我会根据处理过的消息的数量或超时来完成。
有什么方法可以在Java中实现吗?

处理器API允许您通过
ProcessorContext\commit()
来“请求”提交。调用此方法,Kafka Streams将尽快提交。这应该允许您实现一些
处理器
内部计数器,并在此计数器中调用commit()base

此外,您可以使用there配置提交间隔,也可以通过将其设置为
Long.MAX\u VALUE
来有效地禁用它


您还可以根据事件时间或挂钟时间安排标点符号并从那里调用commit(),以获得所需的“超时”行为。

我尝试了ProcessorAPI在每次读取或基于内部计数器时调用ProcessorContext#commit()
,在这两种情况下,我都注意到它与StreamDSL相比非常慢。我有一本卡夫卡到卡夫卡的书,里面有源和汇的主题。使用StreamDSL,接收主题上的提交会反映回源主题,并且性能优于ProcessorAPI。我尝试了10条消息,使用StreamDSL,消费者从接收器主题处理消息的时间在几毫秒范围内,而使用ProcessorAPI则需要几秒钟。如何使用ProcessorAPI进行改进?不确定。DSL只是处理器API上的一个包装器,因此,我不清楚为什么它会慢一些。。。