Skip to content

A framework for sending transactional messages using the outbox pattern, relying on debezium.

License

Notifications You must be signed in to change notification settings

bellotapps/outbox-debezium

Repository files navigation

Debezium Outbox GitHub license Build Status

A framework for sending transactional messages using the outbox pattern, relying on debezium.

Description

The framework consists of several libraries that helps sending messages from a producer to a consumer, using the outbox pattern, relying on debezium as a change data capture system.

How to use it?

Get it!

Maven central

The artifacts will be available in maven central once the first release is performed. In the meantime, you can build the artifacts from source.�

Build from source

You can also build your own versions of the libraries. Maven is required for this.

$ git clone https://github.com/bellotapps/outbox-debezium.git
$ cd outbox-debezium
$ mvn clean install

Note: There are several profiles defined in the root's pom.xml file. The local-deploy profile will also install the sources and javadoc jars. You can use it like this:

$ mvn clean install -P local-deploy

Note: You can also download the source code from https://github.com/bellotapps/outbox-debezium/archive/master.zip

Note: If you just want to get the JAR files, you must use the following command which won't install the libraries in your local repository.

$ mvn clean package

Bill of Materials

This project includes a Bill Of Materials in order to make it easier to import the libraries. Include the following in your pom.xml.

<dependencyManagement>
    <dependencies>
        <!-- ... -->
        <dependency>
            <groupId>com.bellotapps.messaging</groupId>
            <artifactId>outbox-debezium-bom</artifactId>
            <version>${outbox-debezium.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- ... -->
    </dependencies>
</dependencyManagement>

After adding the outbox-debezium-bom artifact as an imported managed dependency, you can start using the different libraries in your project.

Note: A placeholder is used as version in the previous example to avoid changing this readme each time a new version is released. Replace the ${outbox-debezium.version} placeholder with the actual version of the outbox-debezium project.

Kafka Connectors

The outbox-debezium-routing-0.0.1-SNAPSHOT.jar artifact contains Kafka Connectors that must be added. These connectors allow message routing based on the published data. For example, the outbox table for messages to be sent by a producer must contain a recipient column. So, when streaming a change over this table, the MessageRouter connector will publich the message in the topic for that recipient.

For more information about Kafka Connect, check https://kafka.apache.org/21/documentation.html#connectapi and https://kafka.apache.org/documentation.html#connect

Useful Resources

License

Copyright 2019 BellotApps

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

A framework for sending transactional messages using the outbox pattern, relying on debezium.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages