package de.juplo.kafka;
-import org.apache.kafka.clients.consumer.Consumer;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Optional;
-import org.springframework.kafka.core.ConsumerFactory;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
+import org.springframework.kafka.config.KafkaListenerEndpointRegistry;
@Configuration
public class ApplicationConfiguration
{
@Bean
- public ApplicationRecordHandler recordHandler(
+ public ApplicationRecordHandler applicationRecordHandler(
AdderResults adderResults,
KafkaProperties kafkaProperties,
ApplicationProperties applicationProperties)
ApplicationRecordHandler recordHandler,
AdderResults adderResults,
StateRepository stateRepository,
- KafkaProperties kafkaProperties,
- ApplicationProperties applicationProperties)
+ KafkaProperties kafkaProperties)
{
return new ApplicationRebalanceListener(
recordHandler,
}
@Bean
- public EndlessConsumer<String, Message> endlessConsumer(
- Consumer<String, Message> kafkaConsumer,
- ExecutorService executor,
- ApplicationRebalanceListener rebalanceListener,
- ApplicationRecordHandler recordHandler,
- KafkaProperties kafkaProperties,
- ApplicationProperties applicationProperties)
+ public ApplicationErrorHandler applicationErrorHandler()
{
- return
- new EndlessConsumer<>(
- executor,
- kafkaProperties.getClientId(),
- applicationProperties.getTopic(),
- kafkaConsumer,
- rebalanceListener,
- recordHandler);
+ return new ApplicationErrorHandler();
}
@Bean
- public ExecutorService executor()
- {
- return Executors.newSingleThreadExecutor();
- }
-
- @Bean(destroyMethod = "close")
- public Consumer<String, Message> kafkaConsumer(ConsumerFactory<String, Message> factory)
+ public EndlessConsumer endlessConsumer(
+ RecordHandler recordHandler,
+ ApplicationErrorHandler errorHandler,
+ KafkaProperties kafkaProperties,
+ KafkaListenerEndpointRegistry endpointRegistry)
{
- return factory.createConsumer();
+ return
+ new EndlessConsumer(
+ kafkaProperties.getClientId(),
+ endpointRegistry,
+ errorHandler,
+ recordHandler);
}
}