This project contains two different approaches of the transaction outbox pattern based on debezium.
This example handles the outbox manually and uses a custom Kafka connect transformer to send the actual messages.
This uses the debezium quarkus extension to deal with the outbox and then relies on a message based on debezium.
In order to run this examples following steps are required:
-
Build the docker container in debezium-transformer-standalone via
make build -
Build the docker container in debezium-transformer-extension via
make build
This can be done either for standalone or extension:
-
Run the specific docker-compose file via
make docker-standalone -
Run the specific quarkus application via
make quarkus-standalone -
Create a kafka connector via
make connector-standalone-create -
Start the kafka listener via
make listen-cat -
Send a todo to the REST endpoint via
make todo -
Check the output of kafkacat
-
Check status of the kafka connector via
make connector-standalone-status -
Check status of all connectors via
make connector-status -
List all connectors via
make connector-list -
Delete specific connector via
make connector-standalone-delete -
Delete all connectors via
make connector-delete -
Open psql session do the database via
make psql
-
https://debezium.io/documentation/reference/integrations/outbox.html
-
https://debezium.io/blog/2020/01/22/outbox-quarkus-extension/
-
https://debezium.io/documentation/reference/0.9/connectors/postgresql.html
-
https://docs.confluent.io/platform/current/connect/references/restapi.html
-
https://github.com/debezium/debezium-examples/tree/master/outbox
-
https://github.com/debezium/debezium-examples/blob/master/outbox/debezium-strimzi/Dockerfile