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