Rymote.Synapse.Cluster
1.0.0
dotnet add package Rymote.Synapse.Cluster --version 1.0.0
NuGet\Install-Package Rymote.Synapse.Cluster -Version 1.0.0
<PackageReference Include="Rymote.Synapse.Cluster" Version="1.0.0" />
<PackageVersion Include="Rymote.Synapse.Cluster" Version="1.0.0" />
<PackageReference Include="Rymote.Synapse.Cluster" />
paket add Rymote.Synapse.Cluster --version 1.0.0
#r "nuget: Rymote.Synapse.Cluster, 1.0.0"
#:package Rymote.Synapse.Cluster@1.0.0
#addin nuget:?package=Rymote.Synapse.Cluster&version=1.0.0
#tool nuget:?package=Rymote.Synapse.Cluster&version=1.0.0
Rymote.Synapse.Cluster
Cross-node clustering for Rymote.Synapse. Builds on Rymote.Synapse.Net (transports) to deliver events across multi-node deployments.
What it provides
- Full-mesh peer connections with deterministic initiator selection (lower
NodeIdentityinitiates). - Reconnect state machine with exponential backoff and jitter; configurable timeout to declare a peer dead.
- Subscription propagation: local subscriptions broadcast to peers; new peer connections receive a full subscription snapshot.
- Interest table for routing: per-peer interest tracked, partition-key sticky routing via rendezvous (HRW) hashing.
- Cluster-aware
PublishAsync: dispatches locally AND to interested peers. - All three dispatch policies work across the cluster:
Synchronous: publisher awaits remote ack-after-handle.FireAndForget: send-and-forget on the wire.AtLeastOnce: source-side log retention with per-peer cursors and cluster acks; redelivery on reconnect.
- DI extension:
.UseCluster(...).
What it doesn't do (yet)
- Gossip / Redis / Kubernetes membership providers — separate packages.
- Durable cluster state across restarts — all in-memory; future
Persistence.Fileslice. - Bandwidth throttling or QoS classes.
Quickstart
services.AddSynapse(options => options.NodeIdentity = NodeIdentity.NewIdentity())
.UseMessagePackSerialization()
.UseMemoryPersistence()
.UseTcpTransport(tcp => { /* mTLS certs */ })
.UseStaticMembership(membership =>
{
membership.SelfIdentity = ...;
membership.SelfEndPoint = new IPEndPoint(IPAddress.Loopback, 8443);
membership.Peers = [
new(otherNodeIdentity, new IPEndPoint(IPAddress.Loopback, 8444)),
];
})
.UseCluster(cluster =>
{
cluster.MaxReconnectAttempts = 20;
cluster.AtLeastOnceAckTimeout = TimeSpan.FromMinutes(2);
})
.AddHandler<OrderEventsHandler>();
Publish on any node; interested subscribers on any cluster node receive the event.
For partition-key sticky routing:
await bus.PublishAsync(
new OrderEvent(orderId),
options: new PublishOptions { PartitionKey = orderId.ToString() });
Same PartitionKey always routes to the same interested node.
| 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
- MessagePack (>= 2.5.187)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Rymote.Synapse.Abstractions (>= 1.0.0)
- Rymote.Synapse.Core (>= 1.0.0)
- Rymote.Synapse.Diagnostics (>= 1.0.0)
- Rymote.Synapse.Net (>= 1.0.0)
- Rymote.Synapse.Persistence.Memory (>= 1.0.0)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Rymote.Synapse.Cluster:
| Package | Downloads |
|---|---|
|
Rymote.Synapse.Cluster.Kubernetes
Kubernetes Endpoints-watching IMembershipProvider for Rymote.Synapse.Cluster: pod-aware peer discovery via headless Service. |
|
|
Rymote.Synapse.AspNetCore
ASP.NET Core integration for Rymote.Synapse: IHostedService lifecycle, health endpoint, HTTP-trigger publish endpoint. |
|
|
Rymote.Synapse.Cluster.Static
Static seed-list IMembershipProvider for Rymote.Synapse.Cluster. |
|
|
Rymote.Synapse.Cluster.Redis
Redis-backed IMembershipProvider for Rymote.Synapse.Cluster: per-node heartbeat key + pub/sub for membership change events. |
|
|
Rymote.Synapse.Cluster.Gossip
UDP gossip-lite IMembershipProvider for Rymote.Synapse.Cluster: periodic heartbeat broadcast with Alive/Suspect/Dead transitions. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 139 | 5/18/2026 |