Skip to content

Commit 39c10fc

Browse files
committed
[Cloudevents] Switch to Debezium 2.0
1 parent 25d0359 commit 39c10fc

8 files changed

Lines changed: 132 additions & 15 deletions

File tree

cloudevents/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ This demo automatically deploys the topology of services as defined in the [Debe
55
## Preparations
66

77
```shell
8-
export DEBEZIUM_VERSION=1.9
8+
export DEBEZIUM_VERSION=2.0
99
mvn clean install -f avro-data-extractor/pom.xml
1010
docker-compose up --build
1111
```

cloudevents/avro-data-extractor/Dockerfile

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

cloudevents/avro-data-extractor/pom.xml

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
<packaging>jar</packaging>
1111

1212
<properties>
13-
<maven.compiler.source>1.8</maven.compiler.source>
14-
<maven.compiler.target>1.8</maven.compiler.target>
13+
<maven.compiler.source>11</maven.compiler.source>
14+
<maven.compiler.target>11</maven.compiler.target>
1515
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1616
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
1717
<failOnMissingWebXml>false</failOnMissingWebXml>
@@ -21,8 +21,9 @@
2121
<version.surefire>3.0.0-M6</version.surefire>
2222

2323
<apache.kafka.version>3.2.0</apache.kafka.version>
24-
<version.quarkus>2.7.2.Final</version.quarkus>
25-
<version.debezium>1.9.5.Final</version.debezium>
24+
<version.quarkus>2.11.0.Final</version.quarkus>
25+
<version.debezium>2.0.0.CR1</version.debezium>
26+
<version.kafka.avro>7.2.0</version.kafka.avro>
2627
</properties>
2728

2829
<dependencyManagement>
@@ -76,7 +77,7 @@
7677
</dependency>
7778
<dependency>
7879
<groupId>io.quarkus</groupId>
79-
<artifactId>quarkus-undertow-websockets</artifactId>
80+
<artifactId>quarkus-websockets</artifactId>
8081
</dependency>
8182
<dependency>
8283
<groupId>io.quarkus</groupId>
@@ -99,6 +100,32 @@
99100
<artifactId>kafka-streams-avro-serde</artifactId>
100101
<version>5.3.2</version>
101102
</dependency>
103+
<dependency>
104+
<groupId>io.quarkus</groupId>
105+
<artifactId>quarkus-confluent-registry-avro</artifactId>
106+
</dependency>
107+
<!-- Confluent registry libraries use JAX-RS client -->
108+
<dependency>
109+
<groupId>io.quarkus</groupId>
110+
<artifactId>quarkus-rest-client-reactive</artifactId>
111+
</dependency>
112+
<dependency>
113+
<groupId>io.confluent</groupId>
114+
<artifactId>kafka-avro-serializer</artifactId>
115+
<version>${version.kafka.avro}</version>
116+
<exclusions>
117+
<exclusion>
118+
<groupId>jakarta.ws.rs</groupId>
119+
<artifactId>jakarta.ws.rs-api</artifactId>
120+
</exclusion>
121+
</exclusions>
122+
</dependency>
123+
<dependency>
124+
<groupId>io.confluent</groupId>
125+
<artifactId>kafka-connect-avro-converter</artifactId>
126+
<version>${version.kafka.avro}</version>
127+
</dependency>
128+
102129
</dependencies>
103130
<profiles>
104131
<profile>
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
####
2+
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
3+
#
4+
# Before building the container image run:
5+
#
6+
# ./mvnw package
7+
#
8+
# Then, build the image with:
9+
#
10+
# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/my-artifactId-jvm .
11+
#
12+
# Then run the container using:
13+
#
14+
# docker run -i --rm -p 8080:8080 quarkus/my-artifactId-jvm
15+
#
16+
# If you want to include the debug port into your docker image
17+
# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005
18+
#
19+
# Then run the container using :
20+
#
21+
# docker run -i --rm -p 8080:8080 quarkus/my-artifactId-jvm
22+
#
23+
# This image uses the `run-java.sh` script to run the application.
24+
# This scripts computes the command line to execute your Java application, and
25+
# includes memory/GC tuning.
26+
# You can configure the behavior using the following environment properties:
27+
# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class")
28+
# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
29+
# in JAVA_OPTS (example: "-Dsome.property=foo")
30+
# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
31+
# used to calculate a default maximal heap memory based on a containers restriction.
32+
# If used in a container without any memory constraints for the container then this
33+
# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
34+
# of the container available memory as set here. The default is `50` which means 50%
35+
# of the available memory is used as an upper boundary. You can skip this mechanism by
36+
# setting this value to `0` in which case no `-Xmx` option is added.
37+
# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
38+
# is used to calculate a default initial heap memory based on the maximum heap memory.
39+
# If used in a container without any memory constraints for the container then this
40+
# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
41+
# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
42+
# is used as the initial heap size. You can skip this mechanism by setting this value
43+
# to `0` in which case no `-Xms` option is added (example: "25")
44+
# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
45+
# This is used to calculate the maximum value of the initial heap memory. If used in
46+
# a container without any memory constraints for the container then this option has
47+
# no effect. If there is a memory constraint then `-Xms` is limited to the value set
48+
# here. The default is 4096MB which means the calculated value of `-Xms` never will
49+
# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
50+
# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
51+
# when things are happening. This option, if set to true, will set
52+
# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
53+
# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
54+
# true").
55+
# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
56+
# - CONTAINER_CORE_LIMIT: A calculated core limit as described in
57+
# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
58+
# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
59+
# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
60+
# (example: "20")
61+
# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
62+
# (example: "40")
63+
# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
64+
# (example: "4")
65+
# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
66+
# previous GC times. (example: "90")
67+
# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
68+
# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
69+
# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
70+
# contain the necessary JRE command-line options to specify the required GC, which
71+
# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
72+
# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080")
73+
# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080")
74+
# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
75+
# accessed directly. (example: "foo.example.com,bar.example.com")
76+
#
77+
###
78+
FROM registry.access.redhat.com/ubi8/openjdk-11:1.11
79+
80+
ENV LANGUAGE='en_US:en'
81+
82+
83+
# We make four distinct layers so if there are application changes the library layers can be re-used
84+
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
85+
COPY --chown=185 target/quarkus-app/*.jar /deployments/
86+
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
87+
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
88+
89+
EXPOSE 8080
90+
USER 185
91+
ENV AB_JOLOKIA_OFF=""
92+
ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
93+
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
94+

cloudevents/docker-compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ services:
7676
image: debezium-examples/cloudevents-avro-extractor:${DEBEZIUM_VERSION}
7777
build:
7878
context: avro-data-extractor
79+
dockerfile: src/main/docker/Dockerfile.jvm
7980
ports:
8081
- 8079:8079
8182
links:

cloudevents/register-postgres-avro-avro.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"database.user": "postgres",
77
"database.password": "postgres",
88
"database.dbname" : "postgres",
9-
"database.server.name": "dbserver3",
9+
"topic.prefix": "dbserver3",
1010
"slot.name":"dbserver3",
1111
"schema.include.list": "inventory",
1212
"key.converter": "org.apache.kafka.connect.json.JsonConverter",

cloudevents/register-postgres-json-avro.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"database.user": "postgres",
77
"database.password": "postgres",
88
"database.dbname" : "postgres",
9-
"database.server.name": "dbserver2",
9+
"topic.prefix": "dbserver2",
1010
"slot.name":"dbserver2",
1111
"schema.include.list": "inventory",
1212
"key.converter": "org.apache.kafka.connect.json.JsonConverter",

cloudevents/register-postgres-json-json.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
"database.user": "postgres",
77
"database.password": "postgres",
88
"database.dbname" : "postgres",
9-
"database.server.name": "dbserver1",
9+
"topic.prefix": "dbserver1",
1010
"slot.name":"dbserver1",
1111
"schema.include.list": "inventory",
1212
"key.converter": "org.apache.kafka.connect.json.JsonConverter",
1313
"key.converter.schemas.enable": "false",
1414
"value.converter": "io.debezium.converters.CloudEventsConverter",
1515
"value.converter.data.serializer.type" : "json",
16-
"value.converter.json.schemas.enable" : "false"
16+
"value.converter.json.schemas.enable" : "true"
1717
}

0 commit comments

Comments
 (0)