A .NET wrapper for HashiCorp Serf, providing cluster membership, failure detection, and orchestration functionality.
$ dotnet add package SerfWrapperSerfWrapper is a .NET wrapper for HashiCorp Serf, providing cluster membership, failure detection, and orchestration functionality. This NuGet package allows you to easily integrate Serf into your .NET applications.
Install the SerfWrapper package from NuGet:
dotnet add package SerfWrapper
Or via the NuGet Package Manager:
Install-Package SerfWrapper
using System;
using System.Threading.Tasks;
using SerfWrapper;
// Create a log handler
LogHandler logHandler = (message, level) =>
Console.WriteLine($"[{level}] {message}");
// Register for log events
SerfAgent.OnLog += logHandler;
// Register for user events
SerfAgent.OnUserEvent += (name, payload, coalesce) =>
Console.WriteLine($"Received user event: {name}, payload: {payload}, coalesce: {coalesce}");
// Define encryption key and RPC token
string encryptionKey = "your-encryption-key";
string rpcToken = "your-rpc-token";
// Start the Serf agent
int result = SerfAgent.StartSerfAgent(
bindAddr: "127.0.0.1",
bindPort: 7946,
nodeName: "my-node",
encryptionKey: encryptionKey,
rpcToken: rpcToken);
if (result == 0)
{
Console.WriteLine("Serf agent started successfully");
// Send a user event
SerfAgent.SendUserEvent("test-event", "Hello from SerfWrapper!", 0); // 0 for false, 1 for true
// Get the cluster members
var members = SerfAgent.GetMembers();
foreach (var member in members)
{
Console.WriteLine($"{member.Name} at {member.Address}, Status: {member.Status}");
}
// Join another node to the cluster
SerfAgent.JoinCluster("192.168.1.100", 7946);
// Stop the Serf agent when done
SerfAgent.StopSerfAgent();
}
This package is licensed under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.