Skip to content

Commit a9bd87a

Browse files
committed
debezium/dbz#1412 use agroal in postgresql
Signed-off-by: kmos <kmos@commonhaus.dev>
1 parent be92941 commit a9bd87a

File tree

7 files changed

+104
-219
lines changed

7 files changed

+104
-219
lines changed

quarkus-debezium-parent/quarkus-debezium-postgres-parent/deployment/pom.xml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
<artifactId>quarkus-jdbc-postgresql-deployment</artifactId>
3131
</dependency>
3232
<dependency>
33-
<groupId>io.quarkus</groupId>
34-
<artifactId>quarkus-agroal-deployment</artifactId>
33+
<groupId>io.debezium.quarkus</groupId>
34+
<artifactId>quarkus-debezium-agroal-deployment</artifactId>
3535
</dependency>
3636

3737
<dependency>
@@ -63,6 +63,17 @@
6363
<artifactId>quarkus-jdbc-postgresql</artifactId>
6464
<scope>test</scope>
6565
</dependency>
66+
<dependency>
67+
<groupId>io.debezium.quarkus</groupId>
68+
<artifactId>quarkus-debezium-testsuite-deployment</artifactId>
69+
<type>test-jar</type>
70+
<scope>test</scope>
71+
</dependency>
72+
<dependency>
73+
<groupId>org.junit.platform</groupId>
74+
<artifactId>junit-platform-suite</artifactId>
75+
<scope>test</scope>
76+
</dependency>
6677

6778
</dependencies>
6879

quarkus-debezium-parent/quarkus-debezium-postgres-parent/deployment/src/main/java/io/quarkus/debezium/postgres/deployment/PostgresEngineProcessor.java

Lines changed: 19 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,71 +5,46 @@
55
*/
66
package io.quarkus.debezium.postgres.deployment;
77

8-
import java.util.List;
9-
10-
import jakarta.inject.Singleton;
11-
128
import io.debezium.connector.postgresql.Module;
139
import io.debezium.connector.postgresql.PostgresConnector;
1410
import io.debezium.connector.postgresql.PostgresConnectorTask;
1511
import io.debezium.connector.postgresql.PostgresSourceInfoStructMaker;
1612
import io.debezium.connector.postgresql.snapshot.lock.NoSnapshotLock;
1713
import io.debezium.connector.postgresql.snapshot.lock.SharedSnapshotLock;
1814
import io.debezium.connector.postgresql.snapshot.query.SelectAllSnapshotQuery;
19-
import io.debezium.runtime.configuration.QuarkusDatasourceConfiguration;
20-
import io.quarkus.agroal.spi.JdbcDataSourceBuildItem;
21-
import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
2215
import io.quarkus.datasource.deployment.spi.DevServicesDatasourceResultBuildItem;
23-
import io.quarkus.debezium.configuration.DatasourceRecorder;
16+
import io.quarkus.debezium.agroal.configuration.AgroalDatasourceConfiguration;
17+
import io.quarkus.debezium.deployment.QuarkusEngineProcessor;
2418
import io.quarkus.debezium.deployment.items.DebeziumConnectorBuildItem;
19+
import io.quarkus.debezium.deployment.items.DebeziumExtensionNameBuildItem;
2520
import io.quarkus.debezium.engine.PostgresEngineProducer;
2621
import io.quarkus.deployment.IsNormal;
2722
import io.quarkus.deployment.annotations.BuildProducer;
2823
import io.quarkus.deployment.annotations.BuildStep;
29-
import io.quarkus.deployment.annotations.ExecutionTime;
30-
import io.quarkus.deployment.annotations.Record;
3124
import io.quarkus.deployment.builditem.DevServicesResultBuildItem;
32-
import io.quarkus.deployment.builditem.FeatureBuildItem;
3325
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
3426
import io.quarkus.deployment.dev.devservices.DevServicesConfig;
3527
import io.quarkus.deployment.pkg.steps.NativeOrNativeSourcesBuild;
3628

37-
public class PostgresEngineProcessor {
29+
public class PostgresEngineProcessor implements QuarkusEngineProcessor<AgroalDatasourceConfiguration> {
3830

3931
public static final String POSTGRESQL = Module.name();
4032

4133
@BuildStep
42-
FeatureBuildItem feature() {
43-
return new FeatureBuildItem("debezium-" + POSTGRESQL);
34+
@Override
35+
public DebeziumExtensionNameBuildItem debeziumExtensionNameBuildItem() {
36+
return new DebeziumExtensionNameBuildItem(POSTGRESQL);
4437
}
4538

4639
@BuildStep
40+
@Override
4741
public DebeziumConnectorBuildItem engine() {
4842
return new DebeziumConnectorBuildItem(POSTGRESQL, PostgresEngineProducer.class);
4943
}
5044

51-
@BuildStep
52-
@Record(ExecutionTime.RUNTIME_INIT)
53-
public void generateDatasourceConfig(
54-
DatasourceRecorder datasourceRecorder,
55-
BuildProducer<SyntheticBeanBuildItem> producer,
56-
List<JdbcDataSourceBuildItem> jdbcDataSources) {
57-
58-
jdbcDataSources
59-
.stream()
60-
.filter(item -> item.getDbKind().equals(POSTGRESQL))
61-
.forEach(item -> producer.produce(SyntheticBeanBuildItem
62-
.configure(QuarkusDatasourceConfiguration.class)
63-
.scope(Singleton.class)
64-
.supplier(datasourceRecorder.convert(item.getName(), item.isDefault()))
65-
.setRuntimeInit()
66-
.named(item.getDbKind() + item.getName())
67-
.done()));
68-
}
69-
7045
@BuildStep(onlyIfNot = IsNormal.class, onlyIf = DevServicesConfig.Enabled.class)
71-
void configure(BuildProducer<DevServicesResultBuildItem> devServicesProducer,
72-
DevServicesDatasourceResultBuildItem devServicesDatasourceResultBuildItem) {
46+
void devServices(BuildProducer<DevServicesResultBuildItem> devServicesProducer,
47+
DevServicesDatasourceResultBuildItem devServicesDatasourceResultBuildItem) {
7348
DevServicesDatasourceResultBuildItem.DbResult datasource = devServicesDatasourceResultBuildItem.getDefaultDatasource();
7449

7550
if (datasource == null) {
@@ -82,12 +57,13 @@ void configure(BuildProducer<DevServicesResultBuildItem> devServicesProducer,
8257

8358
devServicesProducer.produce(new DevServicesResultBuildItem("debezium-postgres",
8459
"debezium",
85-
QuarkusDatasource.generateDebeziumConfiguration(datasource.getConfigProperties())));
60+
datasource.getConfigProperties()));
8661
}
8762

8863
@BuildStep(onlyIf = NativeOrNativeSourcesBuild.class)
89-
void registerClassesThatAreLoadedThroughReflection(BuildProducer<ReflectiveClassBuildItem> reflectiveClasses) {
90-
reflectiveClasses.produce(ReflectiveClassBuildItem.builder(
64+
@Override
65+
public void registerClassesThatAreLoadedThroughReflection(BuildProducer<ReflectiveClassBuildItem> reflectiveClassBuildItemBuildProducer) {
66+
reflectiveClassBuildItemBuildProducer.produce(ReflectiveClassBuildItem.builder(
9167
PostgresConnector.class,
9268
PostgresSourceInfoStructMaker.class,
9369
PostgresConnectorTask.class,
@@ -98,4 +74,9 @@ void registerClassesThatAreLoadedThroughReflection(BuildProducer<ReflectiveClass
9874
.build());
9975
}
10076

77+
@Override
78+
public Class<AgroalDatasourceConfiguration> quarkusDatasourceConfiguration() {
79+
return AgroalDatasourceConfiguration.class;
80+
}
81+
10182
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright Debezium Authors.
3+
*
4+
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
5+
*/
6+
7+
package io.quarkus.debezium.postgres.deployment;
8+
9+
import java.time.Duration;
10+
11+
import org.testcontainers.containers.PostgreSQLContainer;
12+
import org.testcontainers.containers.wait.strategy.Wait;
13+
import org.testcontainers.utility.DockerImageName;
14+
15+
public class PostgresResource {
16+
17+
private static final String POSTGRES_IMAGE = "quay.io/debezium/postgres:15";
18+
19+
private static final DockerImageName POSTGRES_DOCKER_IMAGE_NAME = DockerImageName.parse(POSTGRES_IMAGE)
20+
.asCompatibleSubstituteFor("postgres");
21+
22+
private static final PostgreSQLContainer<?> POSTGRES_CONTAINER = new PostgreSQLContainer<>(POSTGRES_DOCKER_IMAGE_NAME)
23+
.waitingFor(Wait.forLogMessage(".*database system is ready to accept connections.*", 2))
24+
.withEnv("POSTGRES_INITDB_ARGS", "-E UTF8")
25+
.withEnv("LANG", "en_US.utf8")
26+
.withUsername("postgres")
27+
.withPassword("postgres")
28+
.withDatabaseName("postgres")
29+
.withInitScript("initialize-postgres-database.sql")
30+
.withStartupTimeout(Duration.ofSeconds(30));
31+
32+
public void start() {
33+
POSTGRES_CONTAINER.start();
34+
35+
System.setProperty("POSTGRES_JDBC", POSTGRES_CONTAINER.getJdbcUrl());
36+
System.setProperty("POSTGRES_PASSWORD", POSTGRES_CONTAINER.getPassword());
37+
System.setProperty("POSTGRES_USERNAME", POSTGRES_CONTAINER.getUsername());
38+
}
39+
40+
public void stop() {
41+
POSTGRES_CONTAINER.stop();
42+
}
43+
}

quarkus-debezium-parent/quarkus-debezium-postgres-parent/integration-tests/pom.xml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,21 @@
4646
<artifactId>postgresql</artifactId>
4747
<scope>test</scope>
4848
</dependency>
49+
<dependency>
50+
<groupId>io.debezium.quarkus</groupId>
51+
<artifactId>quarkus-debezium-testsuite-integration-tests</artifactId>
52+
<type>test-jar</type>
53+
<scope>test</scope>
54+
</dependency>
55+
<dependency>
56+
<groupId>io.debezium.quarkus</groupId>
57+
<artifactId>quarkus-debezium-testsuite-integration-tests</artifactId>
58+
</dependency>
59+
<dependency>
60+
<groupId>org.junit.platform</groupId>
61+
<artifactId>junit-platform-suite</artifactId>
62+
<scope>test</scope>
63+
</dependency>
4964
</dependencies>
5065

5166
<build>
@@ -125,7 +140,7 @@
125140
</env>
126141
<volumes>
127142
<bind>
128-
<volume>${project.basedir}/src/main/resources/sql/default.sql:/docker-entrypoint-initdb.d/default.sql</volume>
143+
<volume>${project.basedir}/src/main/resources/sql/default/default.sql:/docker-entrypoint-initdb.d/default.sql</volume>
129144
</bind>
130145
</volumes>
131146
</run>
@@ -144,7 +159,7 @@
144159
</env>
145160
<volumes>
146161
<bind>
147-
<volume>${project.basedir}/src/main/resources/sql/alternative.sql:/docker-entrypoint-initdb.d/alternative.sql</volume>
162+
<volume>${project.basedir}/src/main/resources/sql/alternative/alternative.sql:/docker-entrypoint-initdb.d/alternative.sql</volume>
148163
</bind>
149164
</volumes>
150165
</run>

quarkus-debezium-parent/quarkus-debezium-postgres-parent/runtime/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@
155155
</exclusion>
156156
</exclusions>
157157
</dependency>
158+
<dependency>
159+
<groupId>io.debezium.quarkus</groupId>
160+
<artifactId>quarkus-debezium-agroal</artifactId>
161+
</dependency>
158162

159163
<dependency>
160164
<groupId>io.quarkus</groupId>

quarkus-debezium-parent/quarkus-debezium-postgres-parent/runtime/src/main/java/io/quarkus/debezium/configuration/PostgresDatasourceConfiguration.java

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)