import org.springframework.context.annotation.Configuration;
import java.time.Clock;
+import java.util.Optional;
import java.util.Properties;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ApplicationConfiguration
{
@Bean
- public WordcountRecordHandler wordcountRecordHandler(
- PartitionStatisticsRepository repository,
+ public ApplicationRecordHandler recordHandler(
+ AdderResults adderResults,
+ ApplicationProperties properties)
+ {
+ return new ApplicationRecordHandler(
+ adderResults,
+ Optional.ofNullable(properties.getThrottle()),
+ properties.getClientId());
+ }
+
+ @Bean
+ public AdderResults adderResults()
+ {
+ return new AdderResults();
+ }
+
+ @Bean
+ public ApplicationRebalanceListener rebalanceListener(
+ ApplicationRecordHandler recordHandler,
+ AdderResults adderResults,
+ StateRepository stateRepository,
Consumer<String, String> consumer,
ApplicationProperties properties)
{
- return new WordcountRecordHandler(
- repository,
+ return new ApplicationRebalanceListener(
+ recordHandler,
+ adderResults,
+ stateRepository,
properties.getClientId(),
properties.getTopic(),
Clock.systemDefaultZone(),
public EndlessConsumer<String, String> endlessConsumer(
KafkaConsumer<String, String> kafkaConsumer,
ExecutorService executor,
- WordcountRecordHandler wordcountRecordHandler,
+ ApplicationRebalanceListener rebalanceListener,
+ ApplicationRecordHandler recordHandler,
ApplicationProperties properties)
{
return
properties.getClientId(),
properties.getTopic(),
kafkaConsumer,
- wordcountRecordHandler);
+ rebalanceListener,
+ recordHandler);
}
@Bean