https://github.com/adshan/dotnet-microservices-outbox-pattern
Outbox Pattern strategy to implement atomicity between database transactions and message publishing.
https://github.com/adshan/dotnet-microservices-outbox-pattern
dotnet microservice net5 outbox-pattern rabbitmq
Last synced: 5 months ago
JSON representation
Outbox Pattern strategy to implement atomicity between database transactions and message publishing.
- Host: GitHub
- URL: https://github.com/adshan/dotnet-microservices-outbox-pattern
- Owner: AdsHan
- License: mit
- Created: 2021-08-27T20:22:15.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-09-03T18:42:29.000Z (over 4 years ago)
- Last Synced: 2025-04-13T09:15:07.626Z (10 months ago)
- Topics: dotnet, microservice, net5, outbox-pattern, rabbitmq
- Language: C#
- Homepage:
- Size: 38.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# core-microservices-outbox-pattern
Demonstração de mensageria utilizada em conjunto com Outbox Pattern para garantir a atomicidade com o armazenamento dos Integration Events.
**O problema:** Após realizar uma transação (commit) que efetua a persistência dos dados, pode ser necessária a publicação de uma mensagem no broker! Ocorre que o commit e a publicação da mensagem são operações distintas, não-atômicas. Logo, após o commit, o broker pode ficar indisponível e a mensagem não ser publicada. Para isso existe o Pattern Outbox, onde os dados da mensagem são armazenados como uma transação junto com a persistência da entidade/agregado.
# Este projeto contém:
- Arquitetura Microsserviços;
- RabbitMQ como messaging broker;
- Message Bus;
- Persistência em SQLServer da entidade/agregado;
- Persistência em MongoDB dos Integration Events;
- Pattern CQRS com MediatR;
- Pattern Repository;
- Fluent Validation;
- Mapeamento das entidades por Fluent API;
- Entity Framework (EF) Core;
# Como executar:
- Clonar / baixar o repositório em seu workplace.
- Baixar o .Net Core SDK e o Visual Studio / Code mais recentes.
- Instalar o RabbitMQ local ou em container.
- Instalar o MongoDB local ou em container.
# Sobre
Este projeto foi desenvolvido por Anderson Hansen sob [MIT license](LICENSE).