Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aneshas/aperture
Aperture Projection System
https://github.com/aneshas/aperture
Last synced: 9 days ago
JSON representation
Aperture Projection System
- Host: GitHub
- URL: https://github.com/aneshas/aperture
- Owner: aneshas
- License: apache-2.0
- Created: 2020-04-22T17:51:51.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-29T21:01:55.000Z (over 1 year ago)
- Last Synced: 2024-08-01T13:24:22.975Z (3 months ago)
- Language: C#
- Homepage:
- Size: 116 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Aperture Projection Library
![Build and Test](https://github.com/aneshas/aperture/workflows/Build%20and%20Test/badge.svg)
![Push packages to NuGet.org](https://github.com/aneshas/aperture/workflows/Push%20packages%20to%20NuGet.org/badge.svg)## What is it?
A blog post with a link to an example project [here](https://medium.com/@aneshas/c-event-sourcing-example-with-tactical-ddd-and-aperture-4ade39cbaac3)A set of abstractions allowing you to implement event sourcing projections
with offset tracking and most importantly a way to handle failures gracefully.If you are using only CQRS without the event store you could still
use Aperture to make your life easier.Currently offset tracking and event stream adapters are implemented for:
- PostgreSQL
To come:
- MSSQL
- EventStoreThese adapters come pre built (some in core some in adapter packages),
but aperture is easily extensible (adheres to ports and adapters style of architecture) and allows you
to create your own event stream/store, offset tracking, projection, failure strategy,
exception handling and logging adapters.## Abstractions
Offset tracking adapters and Projection adapters are deliberately
segregated so you can be as flexible as you wan't.You can for example use Postgres adapters to both track your projection state (offset)
and use sql projection to ensure your offset and read model are saved in a transaction.If you don't care about offset tracking you could use built-in no op offset
tracker (which always starts from 0) and still use sql projection adapter.Or use any other combination of offset tracking and projection adapters
(including your custom built ones).## Other hings to come
- Bulk projections (smth like buffered streams with Flush)
- Ability to define retriable exceptions instead of retrying all ProjectionExceptions
- LRU for pull event stream?
- Expose API or Web Dashboard