@Bean public CdcDataPublisher<PublishedEvent> cdcKafkaPublisher(DataProducerFactory dataProducerFactory, EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, OffsetStore offsetStore, PublishingStrategy<PublishedEvent> publishingStrategy, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties) { return new DbLogBasedCdcDataPublisher<>(dataProducerFactory, offsetStore, new DuplicatePublishingDetector(eventuateKafkaConfigurationProperties.getBootstrapServers(), eventuateKafkaConsumerConfigurationProperties), publishingStrategy); }
@Bean @Profile("!EventuatePolling") public CdcDataPublisher<MessageWithDestination> cdcKafkaPublisher(EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, DatabaseOffsetKafkaStore databaseOffsetKafkaStore, PublishingStrategy<MessageWithDestination> publishingStrategy, EventuateKafkaProducerConfigurationProperties eventuateKafkaProducerConfigurationProperties, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties) { return new DbLogBasedCdcDataPublisher<MessageWithDestination>(() -> new EventuateKafkaProducer(eventuateKafkaConfigurationProperties.getBootstrapServers(), eventuateKafkaProducerConfigurationProperties), databaseOffsetKafkaStore, new DuplicatePublishingDetector(eventuateKafkaConfigurationProperties.getBootstrapServers(), eventuateKafkaConsumerConfigurationProperties), publishingStrategy); }
@Bean @Profile("!EventuatePolling") public CdcDataPublisher<MessageWithDestination> cdcKafkaPublisher(EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, DatabaseOffsetKafkaStore databaseOffsetKafkaStore, PublishingStrategy<MessageWithDestination> publishingStrategy, EventuateKafkaProducerConfigurationProperties eventuateKafkaProducerConfigurationProperties, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties) { return new DbLogBasedCdcDataPublisher<MessageWithDestination>(() -> new EventuateKafkaProducer(eventuateKafkaConfigurationProperties.getBootstrapServers(), eventuateKafkaProducerConfigurationProperties), databaseOffsetKafkaStore, new DuplicatePublishingDetector(eventuateKafkaConfigurationProperties.getBootstrapServers(), eventuateKafkaConsumerConfigurationProperties), publishingStrategy); }
@Bean @Profile("PostgresWal") public DbLogBasedCdcDataPublisher<PublishedEvent> dbLogBasedCdcKafkaPublisher(DataProducerFactory dataProducerFactory, EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties, OffsetStore offsetStore, PublishingStrategy<PublishedEvent> publishingStrategy) { return new DbLogBasedCdcDataPublisher<>(dataProducerFactory, offsetStore, new DuplicatePublishingDetector(eventuateKafkaConfigurationProperties.getBootstrapServers(), eventuateKafkaConsumerConfigurationProperties), publishingStrategy); }
@Bean @Conditional(MySqlBinlogCondition.class) public CdcDataPublisher<PublishedEvent> cdcKafkaPublisher(DataProducerFactory dataProducerFactory, EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties, OffsetStore offsetStore, PublishingStrategy<PublishedEvent> publishingStrategy) { return new DbLogBasedCdcDataPublisher<>(dataProducerFactory, offsetStore, new DuplicatePublishingDetector(eventuateKafkaConfigurationProperties.getBootstrapServers(), eventuateKafkaConsumerConfigurationProperties), publishingStrategy); } }
@Override protected CdcDataPublisher<PublishedEvent> createCdcKafkaPublisher() { return new DbLogBasedCdcDataPublisher<>(() -> new EventuateKafkaProducer(eventuateKafkaConfigurationProperties.getBootstrapServers(), EventuateKafkaProducerConfigurationProperties.empty()), offsetStore, new DuplicatePublishingDetector(eventuateKafkaConfigurationProperties.getBootstrapServers(), EventuateKafkaConsumerConfigurationProperties.empty()), publishingStrategy); } }