Wallaby 0.7.0
dotnet add package Wallaby --version 0.7.0
NuGet\Install-Package Wallaby -Version 0.7.0
<PackageReference Include="Wallaby" Version="0.7.0" />
<PackageVersion Include="Wallaby" Version="0.7.0" />
<PackageReference Include="Wallaby" />
paket add Wallaby --version 0.7.0
#r "nuget: Wallaby, 0.7.0"
#:package Wallaby@0.7.0
#addin nuget:?package=Wallaby&version=0.7.0
#tool nuget:?package=Wallaby&version=0.7.0
Wallaby
Postgres Change Data Capture for .NET, driven by your EF Core model.
Wallaby streams row changes from Postgres logical replication, materializes them into your mapped EF Core entities, lets you transform/enrich them, and routes the resulting documents to pluggable destinations (sinks). It self-configures the publication and replication slot from your model, supports backfill operations, and is cluster-safe via leader election.
A Meilisearch sink is supported out of the box. Contributions for additional sinks is welcome.
Packages
| Project | Purpose |
|---|---|
Wallably |
Core package. |
Wallably.Sinks.Meilisearch |
Meilisearch destination sink. |
Quick start
builder.Services.AddDbContextFactory<AppDbContext>(o => o.UseNpgsql(conn));
builder.Services.AddWallaby(cdc =>
{
cdc.UseContext<AppDbContext>()
.UseConnectionString(conn)
.ConfigureOptions(o => { o.SlotName = "app_cdc"; o.PublicationName = "app_cdc_pub"; })
.AddMeilisearchSink("meili", m => { m.Host = "http://localhost:7700"; m.ApiKey = key; })
// Mapping = routing only. The transform does the data shaping.
.Map<Product>()
.ToSink("meili", destination: "products")
.WithBackfillVersion("v1") // bump to force a reindex/backfill
.UsingTransform((db, changes, ct) =>
{
var docs = new Dictionary<DocumentKey, CdcDocument?>();
foreach (var c in changes)
docs[c.Key] = new CdcDocument { ["name"] = c.Entity!.Name };
return Task.FromResult<IReadOnlyDictionary<DocumentKey, CdcDocument?>>(docs);
});
});
Tests
The test suite requires docker to run and can be executed via .\build.ps1 Test
All test projects use TUnit; shared fixtures (e.g. the Postgres container) live in
tests/Wallaby.TestInfrastructure.
| 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
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.8)
- Microsoft.Extensions.Hosting (>= 10.0.8)
- Npgsql (>= 10.0.3)
- Polly.Core (>= 8.6.6)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Wallaby:
| Package | Downloads |
|---|---|
|
Wallaby.Sinks.Meilisearch
Meilisearch destination/sink for Wallaby: keep a Meilisearch index in sync with Postgres changes. |
|
|
Wallaby.AspNetCore.HealthChecks
ASP.NET Core health checks for Wallaby: role-aware liveness and replication readiness probes for Postgres CDC. |
GitHub repositories
This package is not used by any popular GitHub repositories.