@Bean public EventuateConfigurationProperties eventuateConfigurationProperties() { return new EventuateConfigurationProperties(); }
@Bean public DbLogClient<PublishedEvent> dbLogClient(@Value("${spring.datasource.url}") String dataSourceURL, EventuateConfigurationProperties eventuateConfigurationProperties, SourceTableNameSupplier sourceTableNameSupplier, IWriteRowsEventDataParser<PublishedEvent> eventDataParser, EventuateSchema eventuateSchema) { JdbcUrl jdbcUrl = JdbcUrlParser.parse(dataSourceURL); return new MySqlBinaryLogClient<>(eventDataParser, eventuateConfigurationProperties.getDbUserName(), eventuateConfigurationProperties.getDbPassword(), jdbcUrl.getHost(), jdbcUrl.getPort(), eventuateConfigurationProperties.getBinlogClientId(), ResolvedEventuateSchema.make(eventuateSchema, jdbcUrl), sourceTableNameSupplier.getSourceTableName(), eventuateConfigurationProperties.getMySqlBinLogClientName(), eventuateConfigurationProperties.getBinlogConnectionTimeoutInMilliseconds(), eventuateConfigurationProperties.getMaxAttemptsForBinlogConnection()); }
@Bean @Primary public OffsetStore databaseOffsetKafkaStore(EventuateConfigurationProperties eventuateConfigurationProperties, EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, EventuateKafkaProducer eventuateKafkaProducer, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties) { return new DatabaseOffsetKafkaStore(eventuateConfigurationProperties.getDbHistoryTopicName(), eventuateConfigurationProperties.getMySqlBinLogClientName(), eventuateKafkaProducer, eventuateKafkaConfigurationProperties, eventuateKafkaConsumerConfigurationProperties); }
@Bean public PollingDao<PublishedEventBean, PublishedEvent, String> pollingDao(EventuateConfigurationProperties eventuateConfigurationProperties, PollingDataProvider<PublishedEventBean, PublishedEvent, String> pollingDataProvider, DataSource dataSource) { return new PollingDao<>(pollingDataProvider, dataSource, eventuateConfigurationProperties.getMaxEventsPerPolling(), eventuateConfigurationProperties.getMaxAttemptsForPolling(), eventuateConfigurationProperties.getPollingRetryIntervalInMilliseconds()); } }
@Bean public DbLogClient<PublishedEvent> dbLogClient(@Value("${spring.datasource.url}") String dbUrl, @Value("${spring.datasource.username}") String dbUserName, @Value("${spring.datasource.password}") String dbPassword, EventuateConfigurationProperties eventuateConfigurationProperties, PostgresWalMessageParser<PublishedEvent> postgresWalMessageParser) { return new PostgresWalClient<>(postgresWalMessageParser, dbUrl, dbUserName, dbPassword, eventuateConfigurationProperties.getBinlogConnectionTimeoutInMilliseconds(), eventuateConfigurationProperties.getMaxAttemptsForBinlogConnection(), eventuateConfigurationProperties.getPostgresWalIntervalInMilliseconds(), eventuateConfigurationProperties.getPostgresReplicationStatusIntervalInMilliseconds(), eventuateConfigurationProperties.getPostgresReplicationSlotName()); }
@Bean @Conditional(MySqlBinlogCondition.class) @Primary public OffsetStore databaseOffsetKafkaStore(EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, EventuateConfigurationProperties eventuateConfigurationProperties, MySqlBinaryLogClient mySqlBinaryLogClient, EventuateKafkaProducer eventuateKafkaProducer, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties) { return new DatabaseOffsetKafkaStore(eventuateConfigurationProperties.getDbHistoryTopicName(), mySqlBinaryLogClient.getName(), eventuateKafkaProducer, eventuateKafkaConfigurationProperties, eventuateKafkaConsumerConfigurationProperties); }
private void createOtherSchema(String otherSchemaName) { CustomDBCreator dbCreator = new CustomDBCreator(dataFile, dataSourceURL, driverClassName, eventuateConfigurationProperties.getDbUserName(), eventuateConfigurationProperties.getDbPassword()); dbCreator.create(sqlList -> { sqlList.set(0, sqlList.get(0).replace("create database", "create database if not exists")); for (int i = 0; i < 3; i++) sqlList.set(i, sqlList.get(i).replace("eventuate", otherSchemaName)); return sqlList; }); }
@Bean @Profile("PostgresWal") public DbLogClient<MessageWithDestination> dbLogClient(@Value("${spring.datasource.url}") String dbUrl, @Value("${spring.datasource.username}") String dbUserName, @Value("${spring.datasource.password}") String dbPassword, EventuateConfigurationProperties eventuateConfigurationProperties, PostgresWalMessageParser<MessageWithDestination> postgresWalMessageParser) { return new PostgresWalClient<>(postgresWalMessageParser, dbUrl, dbUserName, dbPassword, eventuateConfigurationProperties.getBinlogConnectionTimeoutInMilliseconds(), eventuateConfigurationProperties.getMaxAttemptsForBinlogConnection(), eventuateConfigurationProperties.getPostgresWalIntervalInMilliseconds(), eventuateConfigurationProperties.getPostgresReplicationStatusIntervalInMilliseconds(), eventuateConfigurationProperties.getPostgresReplicationSlotName()); }
@Bean @Profile("EventuatePolling") public PollingDao<PollingMessageBean, MessageWithDestination, String> pollingDao(PollingDataProvider<PollingMessageBean, MessageWithDestination, String> pollingDataProvider, DataSource dataSource, EventuateConfigurationProperties eventuateConfigurationProperties) { return new PollingDao<>(pollingDataProvider, dataSource, eventuateConfigurationProperties.getMaxEventsPerPolling(), eventuateConfigurationProperties.getMaxAttemptsForPolling(), eventuateConfigurationProperties.getPollingRetryIntervalInMilliseconds()); }
public DatabaseOffsetKafkaStore createDatabaseOffsetKafkaStore(MySqlBinaryLogClient mySqlBinaryLogClient) { if (databaseOffsetKafkaStore == null) databaseOffsetKafkaStore = new DatabaseOffsetKafkaStore(eventuateConfigurationProperties.getDbHistoryTopicName(), mySqlBinaryLogClient.getName(), eventuateKafkaProducer, eventuateKafkaConfigurationProperties, EventuateKafkaConsumerConfigurationProperties.empty()); return databaseOffsetKafkaStore; } }
@Bean @Conditional(MySqlBinlogCondition.class) public DbLogClient<MessageWithDestination> mySqlBinaryLogClient(@Value("${spring.datasource.url}") String dataSourceURL, EventuateConfigurationProperties eventuateConfigurationProperties, SourceTableNameSupplier sourceTableNameSupplier, IWriteRowsEventDataParser<MessageWithDestination> eventDataParser, EventuateSchema eventuateSchema) { JdbcUrl jdbcUrl = JdbcUrlParser.parse(dataSourceURL); return new MySqlBinaryLogClient<>(eventDataParser, eventuateConfigurationProperties.getDbUserName(), eventuateConfigurationProperties.getDbPassword(), jdbcUrl.getHost(), jdbcUrl.getPort(), eventuateConfigurationProperties.getBinlogClientId(), ResolvedEventuateSchema.make(eventuateSchema, jdbcUrl), sourceTableNameSupplier.getSourceTableName(), eventuateConfigurationProperties.getMySqlBinLogClientName(), eventuateConfigurationProperties.getBinlogConnectionTimeoutInMilliseconds(), eventuateConfigurationProperties.getMaxAttemptsForBinlogConnection()); }
@Bean @Profile("PostgresWal") public DbLogClient<MessageWithDestination> dbLogClient(@Value("${spring.datasource.url}") String dbUrl, @Value("${spring.datasource.username}") String dbUserName, @Value("${spring.datasource.password}") String dbPassword, EventuateConfigurationProperties eventuateConfigurationProperties, PostgresWalMessageParser<MessageWithDestination> postgresWalMessageParser) { return new PostgresWalClient<>(postgresWalMessageParser, dbUrl, dbUserName, dbPassword, eventuateConfigurationProperties.getBinlogConnectionTimeoutInMilliseconds(), eventuateConfigurationProperties.getMaxAttemptsForBinlogConnection(), eventuateConfigurationProperties.getPostgresWalIntervalInMilliseconds(), eventuateConfigurationProperties.getPostgresReplicationStatusIntervalInMilliseconds(), eventuateConfigurationProperties.getPostgresReplicationSlotName()); }
@Bean @Profile("EventuatePolling") public PollingDao<PollingMessageBean, MessageWithDestination, String> pollingDao(PollingDataProvider<PollingMessageBean, MessageWithDestination, String> pollingDataProvider, DataSource dataSource, EventuateConfigurationProperties eventuateConfigurationProperties) { return new PollingDao<>(pollingDataProvider, dataSource, eventuateConfigurationProperties.getMaxEventsPerPolling(), eventuateConfigurationProperties.getMaxAttemptsForPolling(), eventuateConfigurationProperties.getPollingRetryIntervalInMilliseconds()); }
@Bean @Profile("!EventuatePolling") public DatabaseOffsetKafkaStore databaseOffsetKafkaStore(EventuateConfigurationProperties eventuateConfigurationProperties, EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, EventuateKafkaProducer eventuateKafkaProducer, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties) { return new DatabaseOffsetKafkaStore(eventuateConfigurationProperties.getDbHistoryTopicName(), eventuateConfigurationProperties.getMySqlBinLogClientName(), eventuateKafkaProducer, eventuateKafkaConfigurationProperties, eventuateKafkaConsumerConfigurationProperties); }
@Bean public EventuateConfigurationProperties eventuateConfigurationProperties() { return new EventuateConfigurationProperties(); }
private void assertLastRecordEquals(BinlogFileOffset binlogFileOffset) { OffsetStore offsetStore = getDatabaseOffsetKafkaStore(eventuateConfigurationProperties.getDbHistoryTopicName(), "mySqlBinaryLogClientName"); BinlogFileOffset lastRecord = offsetStore.getLastBinlogFileOffset().get(); assertEquals(binlogFileOffset, lastRecord); offsetStore.stop(); } }
@Bean @Conditional(MySqlBinlogCondition.class) public DbLogClient<MessageWithDestination> mySqlBinaryLogClient(@Value("${spring.datasource.url}") String dataSourceURL, EventuateConfigurationProperties eventuateConfigurationProperties, SourceTableNameSupplier sourceTableNameSupplier, IWriteRowsEventDataParser<MessageWithDestination> eventDataParser, EventuateSchema eventuateSchema) { JdbcUrl jdbcUrl = JdbcUrlParser.parse(dataSourceURL); return new MySqlBinaryLogClient<>(eventDataParser, eventuateConfigurationProperties.getDbUserName(), eventuateConfigurationProperties.getDbPassword(), jdbcUrl.getHost(), jdbcUrl.getPort(), eventuateConfigurationProperties.getBinlogClientId(), ResolvedEventuateSchema.make(eventuateSchema, jdbcUrl), sourceTableNameSupplier.getSourceTableName(), eventuateConfigurationProperties.getMySqlBinLogClientName(), eventuateConfigurationProperties.getBinlogConnectionTimeoutInMilliseconds(), eventuateConfigurationProperties.getMaxAttemptsForBinlogConnection()); }
@Bean @Profile("PostgresWal") public PostgresWalClient<PublishedEvent> postgresWalClient(@Value("${spring.datasource.url}") String dbUrl, @Value("${spring.datasource.username}") String dbUserName, @Value("${spring.datasource.password}") String dbPassword, EventuateConfigurationProperties eventuateConfigurationProperties, PostgresWalMessageParser<PublishedEvent> postgresWalMessageParser) { return new PostgresWalClient<>(postgresWalMessageParser, dbUrl, dbUserName, dbPassword, eventuateConfigurationProperties.getBinlogConnectionTimeoutInMilliseconds(), eventuateConfigurationProperties.getMaxAttemptsForBinlogConnection(), eventuateConfigurationProperties.getPostgresWalIntervalInMilliseconds(), eventuateConfigurationProperties.getPostgresReplicationStatusIntervalInMilliseconds(), eventuateConfigurationProperties.getPostgresReplicationSlotName()); }
@Bean @Profile("EventuatePolling") public PollingDao<PublishedEventBean, PublishedEvent, String> pollingDao(EventuateConfigurationProperties eventuateConfigurationProperties, PollingDataProvider<PublishedEventBean, PublishedEvent, String> pollingDataProvider, DataSource dataSource) { return new PollingDao<>(pollingDataProvider, dataSource, eventuateConfigurationProperties.getMaxEventsPerPolling(), eventuateConfigurationProperties.getMaxAttemptsForPolling(), eventuateConfigurationProperties.getPollingRetryIntervalInMilliseconds()); } }
@Bean @Profile("!EventuatePolling") public DatabaseOffsetKafkaStore databaseOffsetKafkaStore(EventuateConfigurationProperties eventuateConfigurationProperties, EventuateKafkaConfigurationProperties eventuateKafkaConfigurationProperties, EventuateKafkaProducer eventuateKafkaProducer, EventuateKafkaConsumerConfigurationProperties eventuateKafkaConsumerConfigurationProperties) { return new DatabaseOffsetKafkaStore(eventuateConfigurationProperties.getDbHistoryTopicName(), eventuateConfigurationProperties.getMySqlBinLogClientName(), eventuateKafkaProducer, eventuateKafkaConfigurationProperties, eventuateKafkaConsumerConfigurationProperties); }