Rymote.Synapse.Cluster.Gossip
1.0.0
dotnet add package Rymote.Synapse.Cluster.Gossip --version 1.0.0
NuGet\Install-Package Rymote.Synapse.Cluster.Gossip -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.Gossip" 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.Gossip" Version="1.0.0" />
<PackageReference Include="Rymote.Synapse.Cluster.Gossip" />
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.Gossip --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Rymote.Synapse.Cluster.Gossip, 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.Gossip@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.Gossip&version=1.0.0
#tool nuget:?package=Rymote.Synapse.Cluster.Gossip&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Rymote.Synapse.Cluster.Gossip
UDP gossip-lite IMembershipProvider for Rymote.Synapse.Cluster. Each node broadcasts periodic heartbeats over UDP to all known peers and tracks Alive / Suspect / Dead health transitions.
What it does
- Binds a single UDP socket to
GossipPort(default 7946). - Every
HeartbeatIntervalSeconds(default 1 s) broadcasts aHeartbeatMessage(MessagePack-encoded) to every known peer endpoint. - Each heartbeat carries the sender's identity, endpoint, current subscription set, and its own view of the cluster — recipients learn about peers they did not already know (gossip fan-out).
- Tracks
last_seen[peer]timestamps and firesMembershipChangeevents when a peer crosses a threshold:- Alive → Suspect after
SuspectAfterSeconds(default 5 s) without a heartbeat. - Suspect → Dead after
DeadAfterSeconds(default 15 s) without a heartbeat; the peer is removed fromMembers.
- Alive → Suspect after
- Subscription propagation is piggybacked on heartbeats — calling
PublishSubscriptionAsync/WithdrawSubscriptionAsyncmutates the local set; the next heartbeat carries the updated set to all peers. - Self-identity resolves via
SYNAPSE_NODE_IDenv var →HOSTNAMEenv var → file-persisted random GUID underDataDirectory.
What it does NOT do
This is a simplified gossip implementation, not full SWIM. The following are explicitly out of scope:
- Indirect probes / ping-req (no third-party reachability verification).
- Incarnation numbers / refutation (a falsely-declared dead node cannot clear itself).
- Suspicion subjectivity / weighted voting.
- Multicast — heartbeats are N unicast UDP datagrams, one per known peer.
Quickstart
builder.UseCluster()
.UseGossipMembership(opts =>
{
opts.SelfEndPoint = new IPEndPoint(IPAddress.Parse("10.0.0.1"), 7946);
opts.Peers =
[
new GossipSeed(new NodeIdentity(Guid.Parse("...")), new IPEndPoint(IPAddress.Parse("10.0.0.2"), 7946)),
new GossipSeed(new NodeIdentity(Guid.Parse("...")), new IPEndPoint(IPAddress.Parse("10.0.0.3"), 7946)),
];
});
Options
| Property | Default | Description |
|---|---|---|
SelfIdentity |
auto-resolved | Override self node identity. |
SelfEndPoint |
required | IP:port advertised to peers. |
GossipPort |
7946 |
UDP port to bind and send on. |
DataDirectory |
./gossip-state |
Directory used for persisting generated node ID. |
Peers |
[] |
Seed list of GossipSeed objects. |
HeartbeatIntervalSeconds |
1 |
How often to broadcast heartbeats. |
SuspectAfterSeconds |
5 |
Silence before peer becomes Suspect. |
DeadAfterSeconds |
15 |
Silence before peer is declared Dead and removed. |
| 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- MessagePack (>= 2.5.187)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Rymote.Synapse.Abstractions (>= 1.0.0)
- Rymote.Synapse.Cluster (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 88 | 5/18/2026 |