anchor.diff:  you can find the complete https://github.com/debezium/debezium-examples/tree/master/outbox/shipment-service-quarkus[source code] of the implementation in the Debezium examples repo.
   If you got any questions or feedback, please let us know in the comments below;
   looking forward to hearing from you!
  +
  +_Many thanks to Guillaume Smet for reviewing an earlier version of this post!_
   
   == About Debezium
   
  
positive.code: To retrofit the original service into a Quarkus-based application, only a few changes were needed:
  
   * Quarkus right now supports only MariaDB but not MySQL; hence we have included an instance of MariaDB to which the service is writing
   * The https://javaee.github.io/jsonp/[JSON-P API] used do deserialize incoming JSON messages is not supported yet; so the code has been modified to use the Jackson API which is already is supported by Quarkus
   * Instead of the Kafka consumer API, the https://github.com/eclipse/microprofile-reactive-messaging[Reactive Messaging API] defined by MicroProfile is used to receive messages from Apache Kafka; as an implementation of that API, the one provided by the https://github.com/smallrye/smallrye-reactive-messaging[SmallRye project] is used.
  
  While the first two steps shouldn't be needed eventually, as Quarkus gains support for more technologies and APIs over time,
  the Reactive Messaging API is a nice simplification over the polling loop in the original consumer.
  All that's needed to consume messages from a Kafka topic is to annotate a method with `@Incoming`,
  and will automatically be invoked when a new message arrives:
  
  [source,java]
  ----
  
negative.code: 
  == Configuration
  
  As any Quarkus application, the shipment service is configured via the _application.properties_ file:
  
  [source,xml]
  ----
  quarkus.datasource.url: jdbc:mariadb://shipment-db-quarkus:3306/shipmentdb
  quarkus.datasource.driver: org.mariadb.jdbc.Driver
  quarkus.datasource.username: mariadbuser
  quarkus.datasource.password: mariadbpw
  quarkus.hibernate-orm.database.generation=drop-and-create
  quarkus.hibernate-orm.log.sql=true
  
  smallrye.messaging.source.orders.type=io.smallrye.reactive.messaging.kafka.Kafka
  smallrye.messaging.source.orders.topic=OrderEvents
  smallrye.messaging.source.orders.bootstrap.servers=kafka:9092
  smallrye.messaging.source.orders.key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
  smallrye.messaging.source.orders.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
  smallrye.messaging.source.orders.group.id=shipment-service-quarkus
  ----
  
  In our case it contains
  
  *  the definition of a datasource (based on MariaDB) to which the shipment service writes its data,
  *  the definition of a messaging source, which is backed by the "OrderEvents" Kafka topic, using the given bootstrap server, deserializers and Kafka consumer group id.
  
  == Execution
  
  