All Projects → suadev → microservices-change-data-capture-with-debezium

suadev / microservices-change-data-capture-with-debezium

Licence: other
Microservices data exchange with change data capture and outbox pattern.

Programming Languages

C#
18002 projects
shell
77523 projects

Projects that are alternatives of or similar to microservices-change-data-capture-with-debezium

run-aspnetcore-blazor
New .Net Core 3.0 Asp.Net Blazor Components SPA Web Application
Stars: ✭ 22 (-71.79%)
Mutual labels:  aspnetcore
mssql-restapi
A simple REST API for SQL Server, Azure SQL DB and Azure SQL DW using SMO on .NET Core 2.0
Stars: ✭ 33 (-57.69%)
Mutual labels:  aspnetcore
BlazorDemo
Demo application for my writings about Blazor
Stars: ✭ 79 (+1.28%)
Mutual labels:  aspnetcore
webpack-aspnetcore
🚀 Make Webpack and ASP.NET Core friends easy way
Stars: ✭ 28 (-64.1%)
Mutual labels:  aspnetcore
scylla-cdc-source-connector
A Kafka source connector capturing Scylla CDC changes
Stars: ✭ 19 (-75.64%)
Mutual labels:  debezium
redis-microservices-demo
Microservice application with various Redis use-cases with RediSearch, RedisGraph and Streams. The data are synchronize between MySQL and Redis using Debezium as a CDC engine
Stars: ✭ 48 (-38.46%)
Mutual labels:  debezium
Abp.Castle.NLog
Abp的NLog日志输出模块。
Stars: ✭ 15 (-80.77%)
Mutual labels:  aspnetcore
run-aspnet-grpc
Using gRPC in Microservices for Building a high-performance Interservice Communication with .Net 5. See gRPC Microservices and Step by Step Implementation on .NET Course w/ discount->
Stars: ✭ 82 (+5.13%)
Mutual labels:  aspnetcore
Huxley2
A cross-platform JSON proxy for the GB railway Live Departure Boards SOAP API
Stars: ✭ 22 (-71.79%)
Mutual labels:  aspnetcore
DNTBreadCrumb.Core
DNTBreadCrumb.Core Creates custom bread crumb definitions, based on Twitter Bootstrap 3.x features for ASP.NET Core applications.
Stars: ✭ 32 (-58.97%)
Mutual labels:  aspnetcore
spid-aspnetcore
AspNetCore Remote Authenticator for SPID
Stars: ✭ 28 (-64.1%)
Mutual labels:  aspnetcore
ZeroToHeroDaprCon
Demos from my Zero to Hero with Dapr session @ DaprCon
Stars: ✭ 36 (-53.85%)
Mutual labels:  aspnetcore
JwtAuthDemo
ASP.NET Core + Angular JWT auth demo; integration tests; login, logout, refresh token, impersonation, authentication, authorization; run on Docker Compose.
Stars: ✭ 278 (+256.41%)
Mutual labels:  aspnetcore
Ext.NET
Ext.NET public Issues.
Stars: ✭ 28 (-64.1%)
Mutual labels:  aspnetcore
worddaze
A Blazor Powered Blogging Application
Stars: ✭ 78 (+0%)
Mutual labels:  aspnetcore
dotNetify-react-native-demo
DotNetify + React Native + .NET Core demo
Stars: ✭ 43 (-44.87%)
Mutual labels:  aspnetcore
ef-db-diagrams
Visualize model created with EntityFramework Core
Stars: ✭ 52 (-33.33%)
Mutual labels:  aspnetcore
abp-push
Push Notification System for ASP.NET Boilerplate
Stars: ✭ 16 (-79.49%)
Mutual labels:  aspnetcore
docker-workshop-with-react-aspnetcore-redis-rabbitmq-mssql
An Asp.Net Core Docker workshop project that includes react ui, redis, mssql, rabbitmq and azure pipelines
Stars: ✭ 53 (-32.05%)
Mutual labels:  aspnetcore
aspnet-core-3-basic-authentication-api
ASP.NET Core 3.1 - Basic HTTP Authentication API
Stars: ✭ 70 (-10.26%)
Mutual labels:  aspnetcore

This simple project demonstrates how to manage eventual consistency between microservices with Change Data Capture and Outbox Pattern using Debezium, Kafka, and Kafka Connect.

Prerequisites

  • .NET 5.0 SDK
  • Docker Desktop

Run in Debug Mode

  • Run 'docker-compose up' and wait for all infra to up and running.
  • Select 'All' debug option and start debugging. (for vs code)
  • Wait until all microservices are up and running.

Initiating Databases: Each service will be created its own database while it's starting for the first time.

Register Debezium Postgres Connectors to Kafka Connect

You need to register two Postgres Connectors. One for Customer Database and the other for Identity Database.

customer_config.json -> Customer Connector Config.

identity_config.json -> Identity Connector Config.

Use customer.sh and identity.sh to create/update/delete connectors. For instance, to create customer connector;

.\customer.sh create_connector

update_connector function is commented out. If you want to update the connector config, uncomment the function and download jq from here.

After registeration of two Debezium Connectors, two workers will be created on Kafka Connect which are listening to the outbox tables to push events to Kafka topics.

Check the connector list via the following endpoint and see the following json result to be sure everything is okay.

curl -X GET http://localhost:8083/connectors 
["identity_outbox_connector", "customer_outbox_connector"]

Now you are ready to test. See sample postman requests here.

Overall Architecture

When a new user created on Identity Service, eventual consistency will be obtained for Customer and Notification Services as shown following flow.

Tool Set

  • Asp.Net 5.0
  • Entity Framework Core 5.0
  • PostgreSQL - Npgsql
  • MediatR
  • Kafka - Zookeeper
  • Confluent.Kafka
  • Kafka Connect
  • Debezium
  • Kafdrop
  • Docker - Docker Compose
  • Azure Data Studio
  • VS Code
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].