Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-8902 Debezium Engine Quarkus Extension
  3. DBZ-8962

Debezium Engine Quarkus Extension: custom deserializer

XMLWordPrintable

      Context

      By default, Debezium emits change events as structures like (ChangeEvent<V, T>). While flexible, this model forces developers to manually deserialize payloads — typically using Jackson or similar libraries — which adds repetitive, error-prone boilerplate. Quarkus supports direct mapping of Kafka messages to domain objects using Jackson-based deserializers (ObjectMapperDeserializer). A similar approach is desirable in the Debezium extension to allow developers to bind change events directly to pojos.

      Decision

      Extend the Quarkus Debezium extension to support custom deserialization of change events into Java records or POJOs via a Jackson-based deserializer.

      Allow users to:

      • Define classes representing tables (e.g., Order, Customer, etc.)
      • Register a custom deserializer that maps the raw JSON payload to the target type

      Consequences

      • The extension must support binding to CapturingEvent<T> or where T is the target class.
      • Requires support for generic type inference or explicit deserializer class declaration.
      • Developers must supply a deserializer class for each type.
      • Native image support requires deserializers and classes to be registered for reflection.
      • Error handling for malformed payloads must be clearly defined and documented.

      References:

      Debezium Design Document: https://github.com/debezium/debezium-design-documents/pull/16

              gpanice@redhat.com Giovanni Panice
              rh-ee-gpanice Giovanni Panice (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: