A framework for sending transactional messages using the outbox pattern, relying on debezium.
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.
The artifacts will be available in maven central once the first release is performed. In the meantime, you can build the artifacts 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
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.
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
- https://debezium.io/
- https://kafka.apache.org
- https://microservices.io/patterns/data/application-events.html
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.