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 recordHandler(
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,
44 ApplicationProperties applicationProperties)
46 return new ApplicationRebalanceListener(
50 kafkaProperties.getClientId());
54 public EndlessConsumer<String, Message> endlessConsumer(
55 Consumer<String, Message> kafkaConsumer,
56 ExecutorService executor,
57 ApplicationRebalanceListener rebalanceListener,
58 ApplicationRecordHandler recordHandler,
59 KafkaProperties kafkaProperties,
60 ApplicationProperties applicationProperties)
63 new EndlessConsumer<>(
65 kafkaProperties.getClientId(),
66 applicationProperties.getTopic(),
73 public ExecutorService executor()
75 return Executors.newSingleThreadExecutor();
78 @Bean(destroyMethod = "close")
79 public Consumer<String, Message> kafkaConsumer(ConsumerFactory<String, Message> factory)
81 return factory.createConsumer();