1 package de.juplo.kafka;
3 import org.apache.kafka.clients.consumer.Consumer;
4 import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
5 import org.springframework.boot.context.properties.EnableConfigurationProperties;
6 import org.springframework.context.annotation.Bean;
7 import org.springframework.context.annotation.Configuration;
9 import java.util.Optional;
10 import org.springframework.kafka.core.ConsumerFactory;
12 import java.util.concurrent.ExecutorService;
13 import java.util.concurrent.Executors;
17 @EnableConfigurationProperties({ KafkaProperties.class, ApplicationProperties.class })
18 public class ApplicationConfiguration
21 public ApplicationRecordHandler applicationRecordHandler(
22 AdderResults adderResults,
23 KafkaProperties kafkaProperties,
24 ApplicationProperties applicationProperties)
26 return new ApplicationRecordHandler(
28 Optional.ofNullable(applicationProperties.getThrottle()),
29 kafkaProperties.getClientId());
33 public AdderResults adderResults()
35 return new AdderResults();
39 public ApplicationRebalanceListener rebalanceListener(
40 ApplicationRecordHandler recordHandler,
41 AdderResults adderResults,
42 StateRepository stateRepository,
43 KafkaProperties kafkaProperties)
45 return new ApplicationRebalanceListener(
49 kafkaProperties.getClientId());
53 public EndlessConsumer<String, Message> endlessConsumer(
54 Consumer<String, Message> kafkaConsumer,
55 ExecutorService executor,
56 ApplicationRebalanceListener rebalanceListener,
57 RecordHandler recordHandler,
58 KafkaProperties kafkaProperties,
59 ApplicationProperties applicationProperties)
62 new EndlessConsumer<>(
64 kafkaProperties.getClientId(),
65 applicationProperties.getTopic(),
72 public ExecutorService executor()
74 return Executors.newSingleThreadExecutor();
77 @Bean(destroyMethod = "close")
78 public Consumer<String, Message> kafkaConsumer(ConsumerFactory<String, Message> factory)
80 return factory.createConsumer();