Repository navigation
[PHEE-366] Add the Zeebe broker-side APIs and Prometheus simpleclient to the BOM - #7
Merged
tdaly61 merged 3 commits intoAug 26, 2026
Conversation
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.
GiulioRinalduzzi
marked this pull request as draft
August 7, 2026 20:36
GiulioRinalduzzi
marked this pull request as ready for review
August 8, 2026 07:37
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.
tdaly61
approved these changes
Aug 26, 2026
tdaly61
left a comment
Contributor
There was a problem hiding this comment.
@GiulioRinalduzzi , @DavidH-1 this is not the way I was originally thinking about handling exporter.jar ..but I want to get this into our dev branch and which should allow the openMF/paymenthub-ee-data-pipeline#1 to be merged and operate. My logic is that we can adjust this when I have a better handle on it. Thanks for making sure we are only at zeebe Giulio as David, this is still the permissive zeebe license
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Three constraints in
bom/build.gradle:io.camunda:zeebe-exporter-api— theExporter/Context/Controllerinterfacesio.camunda:zeebe-protocol— theRecordtypes the broker hands toexport()io.prometheus:simpleclient(0.16.0) — the legacy metrics client the Zeebe broker shipsThe first two follow the same
zeebeVersion(8.4.17) the Zeebe clients already use, purely for consistency — not because they have to match the running broker. They arecompileOnlyin the exporter, so the broker supplies the classes at runtime; theExporterSPI 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. Nothing in this repository sets the broker's version anyway — that is the chart's image tag. (An earlier revision of this PR claimed they must match; the comments in the build files are corrected too.)simpleclientis pinned: Spring Boot 3 manages the newerio.prometheus:prometheus-metrics-*line instead, so the legacy client is not governed by the imported Spring Boot BOM.Why
The Kafka exporter in
paymenthub-ee-data-pipelineis a broker plugin, not a service: the broker loads its jar from disk and runs it inside its own JVM. So it compiles against those three, ascompileOnly, with no version of its own. Without these constraints its build fails withCould not find io.camunda:zeebe-exporter-api:— an empty version.The alternative would be pinning the versions in that module's
build.gradle, which the migration rules rule out: every version comes from this BOM.This is a prerequisite for openMF/paymenthub-ee-data-pipeline#1.
One thing worth a decision before merging
A note from the zeebe thread — David said: "On camunda we need to check license terms they changed around then which is why we are looking at workflow abstraction".
This PR pulls the broker's internal SPI into the BOM, so it deepens exactly the Camunda coupling a workflow abstraction would want to remove. The exporter is the only component in the whole migration that touches that SPI — everything else is client-side (
zeebe-client-java,spring-zeebe-starter) and would sit behind an abstraction unchanged.I had parked this PR for that reason and am opening it because the data-pipeline PR is meant to carry all four components. If you would rather keep the broker APIs out of the BOM until the abstraction decision is made, say so and I will drop the exporter from that PR instead — the other three modules do not need anything here.
Nothing in this PR moves anyone onto a newer Camunda:
zeebeVersionstays 8.4.17.Update. The ticket to package the exporter as a self-contained Zeebe 8.5 image gives it its own repository (
paymenthub-ee-exporter-zeebe) with the Shadow plugin, which means it can pin these three itself. Nothing else in the migration declareszeebe-exporter-api,zeebe-protocol,simpleclientororg.apache.kafka:kafka-clientsdirectly — the other Kafka users go throughspring-kafka, which the Spring Boot BOM already manages. So if the exporter moves out, this PR can be closed rather than merged, and the broker SPI stays out of the BOM, which is what the workflow-abstraction concern wanted. Holding here until that is decided.Verified
./gradlew :bom:verifyBomgreen, 245 artifacts, 0javax. Published to a local Artifactory and the exporter module compiles against it (clean build, fat jar produced).