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 有没有读过卡夫卡主题的春季时间表的例子?_Apache Kafka_Kafka Consumer Api_Spring Kafka_Spring Scheduled - Fatal编程技术网

Apache kafka 有没有读过卡夫卡主题的春季时间表的例子?

Apache kafka 有没有读过卡夫卡主题的春季时间表的例子?,apache-kafka,kafka-consumer-api,spring-kafka,spring-scheduled,Apache Kafka,Kafka Consumer Api,Spring Kafka,Spring Scheduled,我们试图在指定的窗口时间从Kafka读取数据,因此我们有Kafka消费者,这意味着避免在其他时间读取数据。但是,我们不确定在时间期限到期后如何关闭消费者。我想知道有没有什么例子可以说明如何做到这一点?非常感谢您的帮助。您可以禁用AutoStart,然后使用start和stop方法手动启动kafka容器 但是,在上述方法中,无法保证来自kafka的所有消息都会在该时间段内被使用—这取决于加载和处理速度您可以禁用自动启动,然后使用启动和停止方法手动启动kafka容器 但是在上面的方法中不能保证卡

我们试图在指定的窗口时间从Kafka读取数据,因此我们有Kafka消费者,这意味着避免在其他时间读取数据。但是,我们不确定在时间期限到期后如何关闭消费者。我想知道有没有什么例子可以说明如何做到这一点?非常感谢您的帮助。

您可以禁用AutoStart,然后使用start和stop方法手动启动kafka容器

但是,在上述方法中,无法保证来自kafka的所有消息都会在该时间段内被使用—这取决于加载和处理速度

您可以禁用自动启动,然后使用启动和停止方法手动启动kafka容器


<>但是在上面的方法中不能保证卡夫卡的所有消息在那个时间帧中被消耗,这取决于负载和处理速度

,我有相同的用例,但是我编写了一个调度程序,指定一个批次的最大轮询记录,如果计数器与最大轮询记录匹配,则保持计数器。批次处理完成,因为它已经处理了在一次轮询期间获得的记录

然后我取消订阅该主题并关闭消费者。计划程序下次运行时,将再次处理指定限制的最大轮询记录

fixedDelayString实现了在前一个任务完成后,调度器在指定的时间限制后启动的目的

@EnableScheduling
public class MessageScheduler{

        @Scheduled(initialDelayString = "${fixedInitialDelay.in.milliseconds}", fixedDelayString = "${fixedDelay.in.milliseconds}")
        public void run(){

            /*write your kafka consumer here with manual commit*/

            /*once your batch is finished processing unsubcribe and close the consumer*/
                kafkaConsumer.unsubscribe();
                kafkaConsumer.close();
        }

}

我有相同的用例,但是我编写了一个调度程序,指定一个批次的最大轮询记录,如果计数器与最大轮询记录匹配,则保持计数器,然后我认为该批处理已经完成,因为它处理了在一个轮询期间得到的记录。 然后我取消订阅该主题并关闭消费者。计划程序下次运行时,将再次处理指定限制的最大轮询记录

fixedDelayString实现了在前一个任务完成后,调度器在指定的时间限制后启动的目的

@EnableScheduling
public class MessageScheduler{

        @Scheduled(initialDelayString = "${fixedInitialDelay.in.milliseconds}", fixedDelayString = "${fixedDelay.in.milliseconds}")
        public void run(){

            /*write your kafka consumer here with manual commit*/

            /*once your batch is finished processing unsubcribe and close the consumer*/
                kafkaConsumer.unsubscribe();
                kafkaConsumer.close();
        }

}