Kafka Consumer 在 Scheduled job 启动 spring boot 时停止消费

问题描述 投票:0回答:1

我的 spring boot 应用程序有一个 kafka 消费者和一个预定的工作。问题是卡夫卡消费者停止消费,直到预定的工作完成。我希望卡夫卡消费者在她工作的同时继续消费。

对这种行为有什么想法吗?

@KafkaListener(topics = "sometopic", concurrency = "2" )
    public void batchListen(@Payload List<String> messages) {
}



 @Scheduled(fixedDelayString = "30000" , initialDelay = 10000)
    public void job() {
       // some job action 
 }
java spring-boot apache-kafka kafka-consumer-api spring-kafka
1个回答
0
投票

你的问题的解决方案将是引入多线程。在单独的线程中运行 kafka 消费者并在另一个单独的线程中运行预定作业。

对于预定的工作,您可以像这样使用 Spring

ScheduledThreadPoolExecutor

ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2);
ScheduledFuture<Object> resultFuture =
   executorService.scheduleAtFixedRate(runnableTask, 10, 30, TimeUnit.SECONDS);
© www.soinside.com 2019 - 2024. All rights reserved.