From 281aa7e77b57d200d727512a5d7b71611166c489 Mon Sep 17 00:00:00 2001 From: Giulio Rinalduzzi Date: Fri, 7 Aug 2026 18:43:03 +0200 Subject: [PATCH 1/2] Add the Zeebe broker-side APIs and Prometheus simpleclient to the BOM The Kafka exporter in paymenthub-ee-data-pipeline is a broker plugin, so it compiles against zeebe-exporter-api and zeebe-protocol. Those versions have to match the broker, which is the same zeebeVersion the clients already use, so they belong here rather than pinned in that repository. Zeebe 8.4 still exposes its metrics through io.prometheus:simpleclient, and the exporter registers its own histograms with it. Spring Boot 3 manages the newer prometheus-metrics-* line instead, so simpleclient needs its own pin. bom-verification now resolves all three, plus kafka-clients (Spring Boot managed), and reports zeebe 8.4.17, simpleclient 0.16.0 and kafka-clients 3.8.1. 245 artifacts resolved, no javax.* on the classpath. --- bom/bom-verification/build.gradle | 9 +++++++++ bom/build.gradle | 11 +++++++++++ gradle.properties | 6 ++++++ 3 files changed, 26 insertions(+) diff --git a/bom/bom-verification/build.gradle b/bom/bom-verification/build.gradle index 376d5b8..fc03e95 100644 --- a/bom/bom-verification/build.gradle +++ b/bom/bom-verification/build.gradle @@ -53,6 +53,15 @@ dependencies { exclude group: 'io.camunda', module: 'identity-sdk' } implementation 'io.camunda:zeebe-client-java' + // Broker-side APIs + the metrics client they come with, used by the Kafka + // exporter plugin in paymenthub-ee-data-pipeline. + implementation 'io.camunda:zeebe-exporter-api' + implementation 'io.camunda:zeebe-protocol' + implementation 'io.prometheus:simpleclient' + + // Kafka client (managed by the Spring Boot BOM) — the exporter plugin and + // the importers all talk to the same Kafka topic. + implementation 'org.apache.kafka:kafka-clients' // Jakarta EE 10 implementation 'jakarta.validation:jakarta.validation-api' diff --git a/bom/build.gradle b/bom/build.gradle index 714e577..d1f2e53 100644 --- a/bom/build.gradle +++ b/bom/build.gradle @@ -48,6 +48,17 @@ dependencies { api "io.camunda:spring-zeebe-starter:${zeebeVersion}" api "io.camunda:zeebe-client-java:${zeebeVersion}" api "io.camunda:zeebe-bpmn-model:${zeebeVersion}" + // Broker-side APIs, used by the Kafka exporter plugin in + // paymenthub-ee-data-pipeline. They must match the broker version, so + // they follow the same zeebeVersion as the clients above. + api "io.camunda:zeebe-exporter-api:${zeebeVersion}" + api "io.camunda:zeebe-protocol:${zeebeVersion}" + + // ── Prometheus client ───────────────────────────────────────────────── + // Zeebe 8.4 exposes its metrics through the Prometheus simpleclient, and + // the Kafka exporter registers its own histograms with the same registry, + // so the version has to match the one the broker ships. + api "io.prometheus:simpleclient:${prometheusSimpleclientVersion}" // ── Apache CXF ──────────────────────────────────────────────────────── // CXF 3.x uses javax.*; CXF 4.x uses jakarta.*. diff --git a/gradle.properties b/gradle.properties index 0781fd1..682b366 100644 --- a/gradle.properties +++ b/gradle.properties @@ -75,6 +75,12 @@ mastercardOauth1Version=1.5.3 # JSON — org.json is not managed by the Spring Boot BOM. orgJsonVersion=20240303 +# Prometheus simpleclient — the metrics client the Zeebe 8.4 broker ships. +# Spring Boot 3 manages the newer io.prometheus:prometheus-metrics-* line instead, +# so the legacy simpleclient has to be pinned here. Used by the Kafka exporter +# plugin (paymenthub-ee-data-pipeline), which registers histograms in the broker. +prometheusSimpleclientVersion=0.16.0 + # Elasticsearch 7 legacy REST high-level client. # ph-ee-zeebe-ops (and likely ph-ee-importer-es) still code against the ES7 # RestHighLevelClient API, which Spring Boot 3 / Spring Data ES 5 no longer From cab605bd8163dc49ac6ddbe971932ad8eb6956a5 Mon Sep 17 00:00:00 2001 From: Giulio Rinalduzzi Date: Fri, 21 Aug 2026 12:41:19 +0200 Subject: [PATCH 2/2] Fix the comments explaining the broker-side entries The values are unchanged and the BOM resolves identically; only the comments were wrong, and wrong in a way that invites the reviewer to question a correct number. They said the broker-side APIs "must match the broker version" and called the broker "Zeebe 8.4". Neither holds. The deployed broker is not 8.4, and these versions do not have to equal the running broker's: the exporter takes them compileOnly, so the broker supplies the classes at runtime, the Exporter SPI is stable across the 8.x line, and the exporter deployed today is built against 8.1.1 and runs fine in a broker that is not 8.1. They follow zeebeVersion to stay consistent with the clients, which is the only reason. Same correction for the Prometheus note: the broker ships simpleclient 0.16.0 across 8.x, 8.5 included, so pinning it is not tied to one broker version. --- bom/build.gradle | 16 +++++++++++----- gradle.properties | 4 +++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/bom/build.gradle b/bom/build.gradle index d1f2e53..6f01701 100644 --- a/bom/build.gradle +++ b/bom/build.gradle @@ -49,15 +49,21 @@ dependencies { api "io.camunda:zeebe-client-java:${zeebeVersion}" api "io.camunda:zeebe-bpmn-model:${zeebeVersion}" // Broker-side APIs, used by the Kafka exporter plugin in - // paymenthub-ee-data-pipeline. They must match the broker version, so - // they follow the same zeebeVersion as the clients above. + // paymenthub-ee-data-pipeline. The plugin takes them compileOnly: the + // broker already holds these classes and supplies them at runtime, so + // none of this ends up in the exporter jar. They do NOT have to equal + // the version of the running broker -- the Exporter SPI is stable across + // the 8.x line, and the exporter deployed today is built against 8.1.1 + // and runs fine in a broker that is not 8.1. They follow zeebeVersion to + // stay consistent with the clients above, which is the only reason. api "io.camunda:zeebe-exporter-api:${zeebeVersion}" api "io.camunda:zeebe-protocol:${zeebeVersion}" // ── Prometheus client ───────────────────────────────────────────────── - // Zeebe 8.4 exposes its metrics through the Prometheus simpleclient, and - // the Kafka exporter registers its own histograms with the same registry, - // so the version has to match the one the broker ships. + // The Zeebe broker exposes its metrics through the legacy Prometheus + // simpleclient and ships 0.16.0. The Kafka exporter registers its own + // histograms in that same registry, so it compiles against the version + // the broker carries -- compileOnly, for the same reason as above. api "io.prometheus:simpleclient:${prometheusSimpleclientVersion}" // ── Apache CXF ──────────────────────────────────────────────────────── diff --git a/gradle.properties b/gradle.properties index 682b366..ccfc17a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -75,7 +75,9 @@ mastercardOauth1Version=1.5.3 # JSON — org.json is not managed by the Spring Boot BOM. orgJsonVersion=20240303 -# Prometheus simpleclient — the metrics client the Zeebe 8.4 broker ships. +# Prometheus simpleclient — the legacy metrics client the Zeebe broker ships. +# The 8.x brokers carry 0.16.0, 8.5 included, so this is not tied to one +# broker version. # Spring Boot 3 manages the newer io.prometheus:prometheus-metrics-* line instead, # so the legacy simpleclient has to be pinned here. Used by the Kafka exporter # plugin (paymenthub-ee-data-pipeline), which registers histograms in the broker.