Lightweight CQRS and Event Sourcing implementation for C#
Todo...
- event source vs event stream vs event driven
- cqrs
- glossary
- index with links to implemented decorators (instead of in this file)
IInMemory***Bus for publishers
- tryExecute / queue / fetch
all messages - attribute to have 3rd party queue group name (for aws/azure/etc)
- Replay events
- replay events for new handlers
- ✅ Store - Store messages, and optionally their publisher and handlers
- ✅ ILogger Scope
- Ensure useful structured logging by adding
ILogger.BeginScope
with message metadata
- Ensure useful structured logging by adding
- ✅ Ensure CorrelationId
- Encryption / Decryption
- retry with polly
- ✅ MongoDB implementation
- AWS DynamoDB (maybe, plus example app if doing)
- Azure Cosmos DB (maybe, plus example app if doing)
- ✅ In Memory
- AWS SNS/SQS
- Azure Topics and Queues (maybe, plus example app if doing)
- 👀 c# IServiceCollection
- SimpleInjection
👀
Users
- User - {Key, Name}
- CRUD
TodoList
- TodoItem - {Key, Title, Order, AssignedTo?=User, Status=New|InProgress|Done}
- Add/edit/delete
- AssignToUser
- UpdateStatus
- UpdateOrder
- TodoList - {Key, Title}
- Add/edit/delete
- Get all lists
- Get all lists with items assigned to user
- Get by list Key
- Maybe in future
- Add an image to the TodoItem, see how its dealt with in upload and message processing
- in memory messaging
- no decorators
- no message store
- MongoDB for read model for queries
- Run Api in Github Actions CI
- Will eventually want to run a test matrix of Api tests
- Run same tests against each example Api to ensure functionality is the same from a users perspective
- Specflow + Playwright
- Enrich each test matrix to ensure decorators/db/etc are working
- in memory messaging
- all the decorators
- mongodb repositories
- use messages to build read model in queries
- diagnostic/info flowchart of messages
- Use docker compose local dev and GitHub CI infrastructure
- Aws SNS/SQS messaging
- all the decorators except stores
- queries read model from ??
- Use LocalStack for local dev and GitHub CI infrastructure