Kuestenlogik.Akka.Surgewave.Persistence
0.3.4
Prefix Reserved
dotnet add package Kuestenlogik.Akka.Surgewave.Persistence --version 0.3.4
NuGet\Install-Package Kuestenlogik.Akka.Surgewave.Persistence -Version 0.3.4
<PackageReference Include="Kuestenlogik.Akka.Surgewave.Persistence" Version="0.3.4" />
<PackageVersion Include="Kuestenlogik.Akka.Surgewave.Persistence" Version="0.3.4" />
<PackageReference Include="Kuestenlogik.Akka.Surgewave.Persistence" />
paket add Kuestenlogik.Akka.Surgewave.Persistence --version 0.3.4
#r "nuget: Kuestenlogik.Akka.Surgewave.Persistence, 0.3.4"
#:package Kuestenlogik.Akka.Surgewave.Persistence@0.3.4
#addin nuget:?package=Kuestenlogik.Akka.Surgewave.Persistence&version=0.3.4
#tool nuget:?package=Kuestenlogik.Akka.Surgewave.Persistence&version=0.3.4
Akka.Surgewave
Akka.NET integration packages for Surgewave — Akka.Streams sources/sinks/flows and an Akka.Persistence journal + snapshot store + read journal, both backed by Surgewave.
Two NuGet packages ship from this repository:
| Package | What it does | Analogous to |
|---|---|---|
Kuestenlogik.Akka.Surgewave.Streams |
Sources, Sinks and Flows for reactive Surgewave topic integration | Akka.Streams.Kafka (Alpakka) |
Kuestenlogik.Akka.Surgewave.Persistence |
Journal, Snapshot Store and Persistence Query backed by Surgewave topics, with Schema Registry support | Akka.Persistence.SqlServer (SqlServer backend) |
Naming. The
Akka.*prefix on nuget.org is verified-reserved by the Akka.NET team (ownerAkka). Third-party plugins either get donated to that account or ship under their own brand. Surgewave takes the second route — theKuestenlogik.Akka.Surgewave.{Streams,Persistence}ids and namespaces sit under the Kuestenlogik brand. The.Surgewave.segment betweenAkkaandStreams/Persistenceis deliberate: it means our namespace never contains the substringAkka.StreamsorAkka.Persistence, so the C# compiler can't confuseusing Akka.Streams.Dsl;(the external Akka.NET package) with our own namespace tree.
Kuestenlogik.Akka.Surgewave.Streams
dotnet add package Kuestenlogik.Akka.Surgewave.Streams
using Kuestenlogik.Akka.Surgewave.Streams;
Features
- PlainSource / CommittableSource — Consumer sources with backpressure and offset commit
- PlainSink / FlexiFlow — Producer stages with delivery feedback and passthrough support
- Transactional — End-to-end exactly-once consume-transform-produce pipelines
- Committer — Batched offset commits with configurable intervals
- Schema Registry — Typed serialization/deserialization via Surgewave Schema Registry
- Partitioned Sources — Sub-source per partition for partition-local processing
Quick Start
var control = SurgewaveConsumer
.CommittableSource(consumerSettings, Subscriptions.Topics("orders"))
.SelectAsync(10, async msg =>
{
await ProcessOrder(msg.Record.Key, msg.Record.Value);
return msg.CommittableOffset;
})
.ToMaterialized(
Committer.Sink(CommitterSettings.Create(system)),
DrainingControl<Done>.Create)
.Run(materializer);
Kuestenlogik.Akka.Surgewave.Persistence
dotnet add package Kuestenlogik.Akka.Surgewave.Persistence
using Kuestenlogik.Akka.Surgewave.Persistence;
Features
- AsyncWriteJournal — Surgewave-backed event journal with index-based fast replay
- SnapshotStore — Compacted topic for automatic snapshot lifecycle
- Persistence Query — EventsByPersistenceId, EventsByTag, AllEvents (live + current)
- Two Serialization Modes — Opaque (Akka serializer passthrough) and Schema Registry (Protobuf/Avro/JSON)
- Schema Registry Integration — Events become first-class citizens in the Surgewave ecosystem
- Exactly-Once Semantics — Optional transactional writes for AtomicWrite guarantees
- Multi-Tenancy — Topic prefix support for multiple actor systems on the same cluster
Quick Start
builder.Services.AddAkka("my-system", (akkaBuilder, sp) =>
{
akkaBuilder
.WithSurgewavePersistence(surgewave =>
{
surgewave.BootstrapServers = "localhost:9092";
surgewave.Journal.Topic = "akka-journal";
surgewave.Snapshots.Topic = "akka-snapshots";
surgewave.SchemaRegistry.Url = "http://localhost:8081";
})
.WithSurgewaveReadJournal();
});
History
This repository consolidates the previously separate Akka.Streams.Surgewave and Akka.Persistence.Surgewave repositories (each at v0.1.1 on nuget.org under Kuestenlogik.Akka.Streams.Surgewave / Kuestenlogik.Akka.Persistence.Surgewave). v0.3.0 ships from this combined repo with the ids above; the old repos are archived with a pointer to this one. (A short-lived v0.2.0 used the interim ids Kuestenlogik.Surgewave.AkkaStreams / .AkkaPersistence; those are unlisted in favour of the Kuestenlogik.Akka.Surgewave.* ids.)
License
Apache-2.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Akka.Hosting (>= 1.5.44)
- Akka.Persistence (>= 1.5.44)
- Akka.Persistence.Query (>= 1.5.44)
- Akka.Streams (>= 1.5.44)
- Kuestenlogik.Surgewave.Client (>= 0.1.13)
- Kuestenlogik.Surgewave.Client.SchemaRegistry (>= 0.1.13)
- Kuestenlogik.Surgewave.Client.SchemaRegistry.Protobuf (>= 0.1.13)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.