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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rymote.Synapse.Cluster" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rymote.Synapse.Cluster" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Rymote.Synapse.Cluster" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Rymote.Synapse.Cluster --version 1.0.0
                    
#r "nuget: Rymote.Synapse.Cluster, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Rymote.Synapse.Cluster@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Rymote.Synapse.Cluster&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Rymote.Synapse.Cluster&version=1.0.0
                    
Install as a Cake Tool

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 NodeIdentity initiates).
  • 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.File slice.
  • 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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