@Test public void shouldParseUrl() { JdbcUrl jdbcUrl = JdbcUrlParser.parse("jdbc:mysql://192.168.99.101/eventuate"); assertEquals("192.168.99.101", jdbcUrl.getHost()); assertEquals(3306, jdbcUrl.getPort()); assertEquals("eventuate", jdbcUrl.getDatabase()); }
public static JdbcUrl parse(String dataSourceURL) { Pattern p = Pattern.compile("jdbc:[a-zA-Z0-9]+://([^:/]+)(:[0-9]+)?/([^?]+)(\\?.*)?$"); Matcher m = p.matcher(dataSourceURL); if (!m.matches()) throw new RuntimeException(dataSourceURL); String host = m.group(1); String port = m.group(2); String database = m.group(3); return new JdbcUrl(host, port == null ? 3306 : Integer.parseInt(port.substring(1)), database); } }
@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()); }
public static ResolvedEventuateSchema make(EventuateSchema eventuateSchema, JdbcUrl jdbcUrl) { return new ResolvedEventuateSchema(eventuateSchema.isEmpty() ? jdbcUrl.getDatabase() : eventuateSchema.getEventuateDatabaseSchema()); }
@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 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()); }
@Test public void shouldParseUrlWithParameters() { JdbcUrl jdbcUrl = JdbcUrlParser.parse("jdbc:mysql://192.168.99.101:3306/eventuate?useUnicode=true"); assertEquals("192.168.99.101", jdbcUrl.getHost()); assertEquals(3306, jdbcUrl.getPort()); assertEquals("eventuate", jdbcUrl.getDatabase()); }
@Bean @Conditional(MySqlBinlogCondition.class) public MySqlBinaryLogClient<PublishedEvent> mySqlBinaryLogClient(@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()); }
@Test public void shouldParseUrlWithPort() { JdbcUrl jdbcUrl = JdbcUrlParser.parse("jdbc:mysql://192.168.99.101:3306/eventuate"); assertEquals("192.168.99.101", jdbcUrl.getHost()); assertEquals(3306, jdbcUrl.getPort()); assertEquals("eventuate", jdbcUrl.getDatabase()); }
private MySqlBinaryLogClient<PublishedEvent> createMySqlBinaryLogClient() { 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()); }
private MySqlBinaryLogClient<PublishedEvent> makeMySqlBinaryLogClient() { 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()); }