fix: `ConsumerTaskRunner` waits until the data-loading is finished
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / implementation / kafka / KafkaServicesApplicationRunner.java
1 package de.juplo.kafka.chat.backend.implementation.kafka;
2
3 import jakarta.annotation.PreDestroy;
4 import lombok.RequiredArgsConstructor;
5 import lombok.extern.slf4j.Slf4j;
6 import org.springframework.boot.ApplicationArguments;
7 import org.springframework.boot.ApplicationRunner;
8 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
9 import org.springframework.stereotype.Component;
10
11
12 @ConditionalOnProperty(
13     prefix = "chat.backend",
14     name = "services",
15     havingValue = "kafka")
16 @Component
17 @RequiredArgsConstructor
18 @Slf4j
19 public class KafkaServicesApplicationRunner implements ApplicationRunner
20 {
21   private final ConsumerTaskRunner consumerTaskRunner;
22
23
24   @Override
25   public void run(ApplicationArguments args) throws Exception
26   {
27     consumerTaskRunner.executeConsumerTasks();
28   }
29
30   @PreDestroy
31   public void joinConsumerTasks() throws InterruptedException
32   {
33     consumerTaskRunner.joinConsumerTasks();
34   }
35 }