Skip to content

Commit

Permalink
Migrate apicurio to use version 3
Browse files Browse the repository at this point in the history
  • Loading branch information
carlesarnal committed Feb 4, 2025
1 parent 89276df commit 121f5da
Show file tree
Hide file tree
Showing 25 changed files with 61 additions and 366 deletions.
14 changes: 4 additions & 10 deletions bom/application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,7 @@
<log4j2-api.version>2.24.2</log4j2-api.version>
<log4j-jboss-logmanager.version>1.3.1.Final</log4j-jboss-logmanager.version>
<avro.version>1.12.0</avro.version>
<apicurio-registry.version>2.6.6.Final</apicurio-registry.version>
<apicurio-common-rest-client.version>0.1.18.Final</apicurio-common-rest-client.version> <!-- must be the version Apicurio Registry uses -->
<apicurio-registry.version>3.0.7-SNAPSHOT</apicurio-registry.version>
<testcontainers.version>1.20.4</testcontainers.version> <!-- Make sure to also update docker-java.version to match its needs -->
<docker-java.version>3.4.0</docker-java.version> <!-- must be the version Testcontainers use: https://central.sonatype.com/artifact/org.testcontainers/testcontainers -->
<!-- Check the compatibility matrix (https://github.com/opensearch-project/opensearch-testcontainers) before upgrading: -->
Expand Down Expand Up @@ -3722,24 +3721,19 @@
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-client</artifactId>
<artifactId>apicurio-registry-schema-resolver</artifactId>
<version>${apicurio-registry.version}</version>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-serdes-avro-serde</artifactId>
<artifactId>apicurio-registry-avro-serde-kafka</artifactId>
<version>${apicurio-registry.version}</version>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-serdes-jsonschema-serde</artifactId>
<artifactId>apicurio-registry-jsonschema-serde-kafka</artifactId>
<version>${apicurio-registry.version}</version>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-common-rest-client-vertx</artifactId>
<version>${apicurio-common-rest-client.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mutiny</artifactId>
Expand Down
10 changes: 5 additions & 5 deletions docs/src/main/asciidoc/apicurio-registry-dev-services.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ This automatic configuration only applies to serializers and deserializers from
[source,properties]
----
# for Apicurio Registry serde
mp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v2
mp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v3
# for Confluent Schema Registry serde
mp.messaging.connector.smallrye-kafka.schema.registry.url=http://localhost:8081/apis/ccompat/v6
mp.messaging.connector.smallrye-kafka.schema.registry.url=http://localhost:8081/apis/ccompat/v7
----


Expand Down Expand Up @@ -72,10 +72,10 @@ Note that the Kafka channels in SmallRye Reactive messaging are automatically co

== Configuring the image

Dev Services for Apicurio Registry uses `apicurio/apicurio-registry-mem` images.
You can select any 2.x version from https://hub.docker.com/r/apicurio/apicurio-registry-mem:
Dev Services for Apicurio Registry uses `apicurio/apicurio-registry` images. These images use an in-memory h2 database by default.
You can select any 3.x version from https://hub.docker.com/r/apicurio/apicurio-registry:

[source, properties]
----
quarkus.apicurio-registry.devservices.image-name=apicurio/apicurio-registry-mem:latest-snapshot
quarkus.apicurio-registry.devservices.image-name=apicurio/apicurio-registry:latest-snapshot
----
122 changes: 5 additions & 117 deletions docs/src/main/asciidoc/kafka-schema-registry-avro.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -351,11 +351,9 @@ services:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
schema-registry:
image: apicurio/apicurio-registry-mem:2.4.2.Final
image: apicurio/apicurio-registry:3.0.6
ports:
- 8081:8080
depends_on:
- kafka
environment:
QUARKUS_PROFILE: prod
----
Expand All @@ -378,7 +376,7 @@ And run it in JVM mode with:

[source, bash]
----
java -Dmp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v2 -jar target/quarkus-app/quarkus-run.jar
java -Dmp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v3 -jar target/quarkus-app/quarkus-run.jar
----

NOTE: By default, the application tries to connect to a Kafka broker listening at `localhost:9092`.
Expand All @@ -388,7 +386,7 @@ Specifying the registry URL on the command line is not very convenient, so you c

[source,properties]
----
%prod.mp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v2
%prod.mp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v3
----

You can build a native executable with:
Expand Down Expand Up @@ -585,13 +583,13 @@ public class KafkaAndSchemaRegistryTestResource implements QuarkusTestResourceLi
@Override
public Map<String, String> start() {
kafka.start();
registry = new GenericContainer<>("apicurio/apicurio-registry-mem:2.4.2.Final")
registry = new GenericContainer<>("apicurio/apicurio-registry:3.0.6")
.withExposedPorts(8080)
.withEnv("QUARKUS_PROFILE", "prod");
registry.start();
Map<String, String> properties = new HashMap<>();
properties.put("mp.messaging.connector.smallrye-kafka.apicurio.registry.url",
"http://" + registry.getHost() + ":" + registry.getMappedPort(8080) + "/apis/registry/v2");
"http://" + registry.getHost() + ":" + registry.getMappedPort(8080) + "/apis/registry/v3");
properties.put("kafka.bootstrap.servers", kafka.getBootstrapServers());
return properties;
}
Expand All @@ -613,116 +611,6 @@ public class MovieResourceTest {
}
----

[[apicurio-versions-compatibility]]
== Using compatible versions of the Apicurio Registry

The `quarkus-apicurio-registry-avro` extension depends on recent versions of Apicurio Registry client,
and most versions of Apicurio Registry server and client are backwards compatible.
For some you need to make sure that the client used by Serdes is compatible with the server.

For example, with Apicurio Dev Service if you set the image name to use version `2.1.5.Final`:

[source,properties]
----
quarkus.apicurio-registry.devservices.image-name=quay.io/apicurio/apicurio-registry-mem:2.1.5.Final
----

You need to make sure that `apicurio-registry-serdes-avro-serde` dependency
and the REST client `apicurio-common-rest-client-vertx` dependency are set to compatible versions:

[source,xml,role="primary asciidoc-tabs-target-sync-cli asciidoc-tabs-target-sync-maven"]
.pom.xml
----
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-apicurio-registry-avro</artifactId>
<exclusions>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-common-rest-client-vertx</artifactId>
</exclusion>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-serdes-avro-serde</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-client</artifactId>
<version>2.1.5.Final</version>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-common</artifactId>
<version>2.1.5.Final</version>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-serdes-avro-serde</artifactId>
<version>2.1.5.Final</version>
<exclusions>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-common-rest-client-jdk</artifactId>
</exclusion>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-client</artifactId>
</exclusion>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-common</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-common-rest-client-vertx</artifactId>
<version>0.1.5.Final</version>
</dependency>
----

[source,gradle,role="secondary asciidoc-tabs-target-sync-gradle",subs=attributes+]
.build.gradle
----
dependencies {
implementation(platform("{quarkus-platform-groupid}:quarkus-bom:2.12.3.Final"))
...
implementation("io.quarkus:quarkus-apicurio-registry-avro")
implementation("io.apicurio:apicurio-registry-serdes-avro-serde") {
exclude group: "io.apicurio", module: "apicurio-common-rest-client-jdk"
exclude group: "io.apicurio", module: "apicurio-registry-client"
exclude group: "io.apicurio", module: "apicurio-registry-common"
version {
strictly "2.1.5.Final"
}
}
implementation("io.apicurio:apicurio-registry-client") {
version {
strictly "2.1.5.Final"
}
}
implementation("io.apicurio:apicurio-registry-common") {
version {
strictly "2.1.5.Final"
}
}
implementation("io.apicurio:apicurio-common-rest-client-vertx") {
version {
strictly "0.1.5.Final"
}
}
}
----

Known previous compatible versions for `apicurio-registry-client` and `apicurio-common-rest-client-vertx` are the following

- `apicurio-registry-client` 2.1.5.Final with `apicurio-common-rest-client-vertx` 0.1.5.Final
- `apicurio-registry-client` 2.3.1.Final with `apicurio-common-rest-client-vertx` 0.1.13.Final

[[confluent]]
== Using the Confluent Schema Registry

Expand Down
122 changes: 5 additions & 117 deletions docs/src/main/asciidoc/kafka-schema-registry-json-schema.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -379,11 +379,9 @@ services:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
schema-registry:
image: apicurio/apicurio-registry-mem:2.4.2.Final
image: apicurio/apicurio-registry:3.0.6
ports:
- 8081:8080
depends_on:
- kafka
environment:
QUARKUS_PROFILE: prod
----
Expand All @@ -406,7 +404,7 @@ And run it in JVM mode with:

[source, bash]
----
java -Dmp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v2 -jar target/quarkus-app/quarkus-run.jar
java -Dmp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v3 -jar target/quarkus-app/quarkus-run.jar
----

NOTE: By default, the application tries to connect to a Kafka broker listening at `localhost:9092`.
Expand All @@ -416,7 +414,7 @@ Specifying the registry URL on the command line is not very convenient, so you c

[source,properties]
----
%prod.mp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v2
%prod.mp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v3
----

You can build a native executable with:
Expand Down Expand Up @@ -613,13 +611,13 @@ public class KafkaAndSchemaRegistryTestResource implements QuarkusTestResourceLi
@Override
public Map<String, String> start() {
kafka.start();
registry = new GenericContainer<>("apicurio/apicurio-registry-mem:2.4.2.Final")
registry = new GenericContainer<>("apicurio/apicurio-registry:3.0.6")
.withExposedPorts(8080)
.withEnv("QUARKUS_PROFILE", "prod");
registry.start();
Map<String, String> properties = new HashMap<>();
properties.put("mp.messaging.connector.smallrye-kafka.apicurio.registry.url",
"http://" + registry.getHost() + ":" + registry.getMappedPort(8080) + "/apis/registry/v2");
"http://" + registry.getHost() + ":" + registry.getMappedPort(8080) + "/apis/registry/v3");
properties.put("kafka.bootstrap.servers", kafka.getBootstrapServers());
return properties;
}
Expand All @@ -641,116 +639,6 @@ public class MovieResourceTest {
}
----

[[apicurio-versions-compatibility]]
== Using compatible versions of the Apicurio Registry

The `quarkus-apicurio-registry-json-schema` extension depends on recent versions of Apicurio Registry client,
and most versions of Apicurio Registry server and client are backwards compatible.
For some you need to make sure that the client used by Serdes is compatible with the server.

For example, with Apicurio Dev Service if you set the image name to use version `2.1.5.Final`:

[source,properties]
----
quarkus.apicurio-registry.devservices.image-name=quay.io/apicurio/apicurio-registry-mem:2.1.5.Final
----

You need to make sure that `apicurio-registry-serdes-json-schema-serde` dependency
and the REST client `apicurio-common-rest-client-vertx` dependency are set to compatible versions:

[source,xml,role="primary asciidoc-tabs-target-sync-cli asciidoc-tabs-target-sync-maven"]
.pom.xml
----
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-apicurio-registry-json-schema</artifactId>
<exclusions>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-common-rest-client-vertx</artifactId>
</exclusion>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-serdes-json-schema-serde</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-client</artifactId>
<version>2.1.5.Final</version>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-common</artifactId>
<version>2.1.5.Final</version>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-serdes-json-schema-serde</artifactId>
<version>2.1.5.Final</version>
<exclusions>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-common-rest-client-jdk</artifactId>
</exclusion>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-client</artifactId>
</exclusion>
<exclusion>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-common</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-common-rest-client-vertx</artifactId>
<version>0.1.5.Final</version>
</dependency>
----

[source,gradle,role="secondary asciidoc-tabs-target-sync-gradle",subs=attributes+]
.build.gradle
----
dependencies {
implementation(platform("{quarkus-platform-groupid}:quarkus-bom:2.12.3.Final"))
...
implementation("io.quarkus:quarkus-apicurio-registry-json-schema")
implementation("io.apicurio:apicurio-registry-serdes-json-schema-serde") {
exclude group: "io.apicurio", module: "apicurio-common-rest-client-jdk"
exclude group: "io.apicurio", module: "apicurio-registry-client"
exclude group: "io.apicurio", module: "apicurio-registry-common"
version {
strictly "2.1.5.Final"
}
}
implementation("io.apicurio:apicurio-registry-client") {
version {
strictly "2.1.5.Final"
}
}
implementation("io.apicurio:apicurio-registry-common") {
version {
strictly "2.1.5.Final"
}
}
implementation("io.apicurio:apicurio-common-rest-client-vertx") {
version {
strictly "0.1.5.Final"
}
}
}
----

Known previous compatible versions for `apicurio-registry-client` and `apicurio-common-rest-client-vertx` are the following

- `apicurio-registry-client` 2.1.5.Final with `apicurio-common-rest-client-vertx` 0.1.5.Final
- `apicurio-registry-client` 2.3.1.Final with `apicurio-common-rest-client-vertx` 0.1.13.Final

[[confluent]]
== Using the Confluent Schema Registry

Expand Down
Loading

0 comments on commit 121f5da

Please sign in to comment.