https://github.com/orleanscontrib/orleans.eventsourcing.snapshot
Snapshot storage provider for orleans event sourcing
https://github.com/orleanscontrib/orleans.eventsourcing.snapshot
eventsourcing orleans snapshot
Last synced: 22 days ago
JSON representation
Snapshot storage provider for orleans event sourcing
- Host: GitHub
- URL: https://github.com/orleanscontrib/orleans.eventsourcing.snapshot
- Owner: OrleansContrib
- Created: 2020-01-02T14:00:34.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-02-12T14:02:06.000Z (2 months ago)
- Last Synced: 2025-03-29T22:11:13.416Z (29 days ago)
- Topics: eventsourcing, orleans, snapshot
- Language: C#
- Homepage:
- Size: 54.7 KB
- Stars: 32
- Watchers: 19
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Orleans.EventSourcing.Snapshot
Snapshot storage provider for orleans event sourcingThis provider stores grain state snapshots and the event sequence, using a standard storage provider that can be configured independently.
### Usage
Install from nuget:
`dotnet add package Orleans.EventSourcing.Snapshot`Add this provider to SiloBuilder:
builder.AddSnapshotStorageBasedLogConsistencyProviderAsDefault((op, name) =>
{
// Take snapshot every five events
op.SnapshotStrategy = strategyInfo => strategyInfo.CurrentConfirmedVersion - strategyInfo.SnapshotVersion >= 5;
op.UseIndependentEventStorage = true;// Should configure independent event storage when set UseIndependentEventStorage true
op.ConfigureIndependentEventStorage = (services, name) =>
{
services.AddSingleton();
};
});
if you set `UseIndependentEventStorage` false, This provider use grain storage to store the snapshot and event sequence. Otherwise, This provider use grain storage to store the snapshot state, And use independent event storage that you configurated to store the event sequence. How to configurate the independent event store you can see the code above.To use the independent event store, you need implement `IGrainEventStorage` interface:
public interface IGrainEventStorage
{
Task SaveEvents(string grainTypeName, GrainReference grainReference, IEnumerable events, int expectedVersion);Task> ReadEvents(string grainTypeName, GrainReference grainReference, int start, int count);
Task EventsCount(string grainTypeName, GrainReference grainReference);
}This provider does support `RetrieveConfirmedEvents`. All events are always available, And where the event keep in denpend on your configuration.
### Use case detail you can see the sample project.