![]() |
VOOZH | about |
dotnet add package Excalibur.EventSourcing.DynamoDb --version 3.0.0-alpha.208
NuGet\Install-Package Excalibur.EventSourcing.DynamoDb -Version 3.0.0-alpha.208
<PackageReference Include="Excalibur.EventSourcing.DynamoDb" Version="3.0.0-alpha.208" />
<PackageVersion Include="Excalibur.EventSourcing.DynamoDb" Version="3.0.0-alpha.208" />Directory.Packages.props
<PackageReference Include="Excalibur.EventSourcing.DynamoDb" />Project file
paket add Excalibur.EventSourcing.DynamoDb --version 3.0.0-alpha.208
#r "nuget: Excalibur.EventSourcing.DynamoDb, 3.0.0-alpha.208"
#:package Excalibur.EventSourcing.DynamoDb@3.0.0-alpha.208
#addin nuget:?package=Excalibur.EventSourcing.DynamoDb&version=3.0.0-alpha.208&prereleaseInstall as a Cake Addin
#tool nuget:?package=Excalibur.EventSourcing.DynamoDb&version=3.0.0-alpha.208&prereleaseInstall as a Cake Tool
AWS DynamoDB event store implementation for Excalibur event sourcing.
{aggregateType}:{aggregateId} as partition keydotnet add package Excalibur.EventSourcing.DynamoDb
services.AddDynamoDbEventStore(options =>
{
options.EventsTableName = "Events";
options.PartitionKeyAttribute = "pk";
options.SortKeyAttribute = "sk";
options.UseTransactionalWrite = true;
options.MaxBatchSize = 100;
options.StreamsPollIntervalMs = 1000;
options.CreateTableIfNotExists = true;
options.UseOnDemandCapacity = true;
options.EnableStreams = true;
});
Or via configuration:
services.AddDynamoDbEventStore(configuration.GetSection("DynamoDbEventStore"));
The package registers both IEventStore and ICloudNativeEventStore:
public class MyService
{
private readonly IEventStore _eventStore;
public MyService(IEventStore eventStore)
{
_eventStore = eventStore;
}
public async Task AppendEventsAsync(
string aggregateId,
IEnumerable<IDomainEvent> events,
long expectedVersion,
CancellationToken ct)
{
var result = await _eventStore.AppendAsync(
aggregateId,
"MyAggregate",
events,
expectedVersion,
ct);
if (!result.Success)
{
// Handle concurrency conflict or failure
}
}
}
Subscribe to event changes for projections or other event handlers:
var subscription = await _eventStore.SubscribeToChangesAsync(null, ct);
await subscription.StartAsync(ct);
await foreach (var change in subscription.ReadChangesAsync(ct))
{
// Process event change
Console.WriteLine($"Event: {change.Document?.EventType}");
}
The event store uses the following DynamoDB table schema:
| Attribute | Type | Description |
|---|---|---|
| pk | String (Partition Key) | Stream ID: {aggregateType}:{aggregateId} |
| sk | Number (Sort Key) | Event version |
| eventId | String | Unique event identifier |
| aggregateId | String | Aggregate identifier |
| aggregateType | String | Aggregate type name |
| eventType | String | Event type name |
| version | Number | Event version |
| timestamp | String | ISO 8601 timestamp |
| eventData | String | Base64-encoded event data |
| metadata | String | JSON-encoded metadata |
| isDispatched | Boolean | Outbox dispatch status |
Excalibur.Data.DynamoDb for AWS SDK setupSee LICENSE files in repository root.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0-alpha.208 | 45 | 6/11/2026 |
| 3.0.0-alpha.207 | 45 | 6/11/2026 |
| 3.0.0-alpha.205 | 48 | 6/10/2026 |
| 3.0.0-alpha.204 | 56 | 6/8/2026 |
| 3.0.0-alpha.203 | 53 | 6/8/2026 |
| 3.0.0-alpha.202 | 47 | 6/8/2026 |
| 3.0.0-alpha.201 | 60 | 6/8/2026 |
| 3.0.0-alpha.199 | 49 | 6/8/2026 |
| 3.0.0-alpha.198 | 47 | 5/28/2026 |
| 3.0.0-alpha.197 | 62 | 5/28/2026 |
| 3.0.0-alpha.194 | 57 | 5/20/2026 |
| 3.0.0-alpha.193 | 55 | 5/13/2026 |
| 3.0.0-alpha.192 | 46 | 5/13/2026 |
| 3.0.0-alpha.191 | 55 | 5/13/2026 |
| 3.0.0-alpha.189 | 53 | 5/12/2026 |
| 3.0.0-alpha.187 | 56 | 5/8/2026 |
| 3.0.0-alpha.185 | 50 | 5/7/2026 |
| 3.0.0-alpha.183 | 59 | 5/7/2026 |
| 3.0.0-alpha.182 | 49 | 5/6/2026 |
| 3.0.0-alpha.181 | 51 | 5/6/2026 |