Skip to content

debezium/debezium-quarkus

Repository files navigation

Debezium Extensions for Quarkus

Licensed under Apache License version 2.0 Chat on Zulip

CI Branch Status

main

Main Branch Build

This repository hosts Debezium extensions for Quarkus, enabling Quarkus applications to work with Debezium for change data capture (CDC) and related patterns.

What’s included

  • Debezium Outbox for Quarkus — a Quarkus extension implementing the Outbox pattern. The Extension provides highly configurable component that facilitates the use of the Outbox pattern paired with Debezium’s CDC connector pipeline.

  • Debezium Runtime Extensions for Quarkus — integrates the Debezium runtime into a Quarkus application so you can consume CDC events within the service. It exposes Quarkus-native configuration, lifecycle hooks, listeners, deserializers, heartbeat and notification events, custom converters and post-processors.

When to use these extensions

  • Use the Outbox extension to implement reliable, asynchronous inter-service communication without dual-writes; combine your app’s transactional outbox table with Debezium connectors and your chosen sink (Kafka, etc.).

  • Use the Quarkus Debezium Engine extension when you want lightweight, Kafka-free (optional) CDC inside your application with fast startup and small memory footprint (particularly with Quarkus Native/GraalVM). Best for POCs, dev environments, or simple streaming in microservices.

Quick start

Add the Runtime Extension to your Quarkus application

Using Quarkus CLI:

quarkus ext add io.debezium.quarkus:quarkus-debezium-postgres

Using Maven:

<dependency>
  <groupId>io.debezium.quarkus</groupId>
  <artifactId>quarkus-debezium-postgres</artifactId>
  <version>${version.debezium}</version>
</dependency>

Using Gradle:

implementation("io.debezium.quarkus:quarkus-debezium-postgres:${version.debezium}")

The Engine extension brings Quarkus-native configuration and listener APIs for consuming CDC events in-process. See the documentation for features and setup details.

Add the Outbox extension to your Quarkus application

Using Quarkus CLI:

quarkus ext add io.debezium:debezium-quarkus-outbox

Using Maven:

<dependency>
  <groupId>io.debezium</groupId>
  <artifactId>debezium-quarkus-outbox</artifactId>
  <version>${version.debezium}</version>
</dependency>

Using Gradle:

implementation("io.debezium:debezium-quarkus-outbox:${version.debezium}")

Define an event class implementing io.debezium.outbox.quarkus.ExportedEvent interface and emit it via CDI (Jakarta Event), and configure the extension/Debezium will capture the outbox table changes and route them downstream. See the documentation for features and setup details.

Example projects

  • Debezium examples repository includes Outbox and other Quarkus-based demos for CDC patterns and native builds.

Requirements

Depending on the extension and target (JVM vs native), typical prerequisites include:

  • JDK 21+

  • Apache Maven 3.9+

  • Quarkus 3.25+ (or platform-aligned)

  • Docker/Podman for local services

  • Optional: Mandrel or GraalVM for native builds

Consult the extension docs for exact versions and details.

License

This software is licensed under the terms you may find in the file named LICENSE.txt in this directory.