fix: `ConsumerTaskRunner` waits until the data-loading is finished
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / implementation / kafka / ConsumerTaskRunner.java
1 package de.juplo.kafka.chat.backend.implementation.kafka;
2
3 import lombok.RequiredArgsConstructor;
4 import lombok.extern.slf4j.Slf4j;
5
6
7 @RequiredArgsConstructor
8 @Slf4j
9 public class ConsumerTaskRunner
10 {
11   private final ConsumerTaskExecutor infoChannelConsumerTaskExecutor;
12   private final ConsumerTaskExecutor dataChannelConsumerTaskExecutor;
13   private final InfoChannel infoChannel;
14
15   public void executeConsumerTasks()
16   {
17     infoChannelConsumerTaskExecutor.executeConsumerTask();
18     dataChannelConsumerTaskExecutor.executeConsumerTask();
19   }
20
21   public void joinConsumerTasks() throws InterruptedException
22   {
23     dataChannelConsumerTaskExecutor.joinConsumerTaskJob();
24     while (infoChannel.loadInProgress())
25     {
26       log.info("Waiting for {} to finish loading...", infoChannel);
27       Thread.sleep(1000);
28     }
29     infoChannelConsumerTaskExecutor.joinConsumerTaskJob();
30   }
31 }