Excalibur.LeaderElection
3.0.0-alpha.26
dotnet add package Excalibur.LeaderElection --version 3.0.0-alpha.26
NuGet\Install-Package Excalibur.LeaderElection -Version 3.0.0-alpha.26
<PackageReference Include="Excalibur.LeaderElection" Version="3.0.0-alpha.26" />
<PackageVersion Include="Excalibur.LeaderElection" Version="3.0.0-alpha.26" />
<PackageReference Include="Excalibur.LeaderElection" />
paket add Excalibur.LeaderElection --version 3.0.0-alpha.26
#r "nuget: Excalibur.LeaderElection, 3.0.0-alpha.26"
#:package Excalibur.LeaderElection@3.0.0-alpha.26
#addin nuget:?package=Excalibur.LeaderElection&version=3.0.0-alpha.26&prerelease
#tool nuget:?package=Excalibur.LeaderElection&version=3.0.0-alpha.26&prerelease
Excalibur.LeaderElection
Distributed leader election infrastructure for the Excalibur framework.
Installation
dotnet add package Excalibur.LeaderElection
Features
ILeaderElection- Leader election abstractionILeaderElectionFactory- Factory for multi-resource leadershipIHealthBasedLeaderElection- Health-aware leader electionInMemoryLeaderElection- In-memory implementation for testing- TypeForwarders for backward compatibility
- AOT-compatible with full Native AOT support
Usage
// Register leader election with in-memory (for testing)
services.AddInMemoryLeaderElection();
// Subscribe to leadership changes
leaderElection.LeaderChanged += (sender, args) =>
{
if (args.IsLeader)
Console.WriteLine("I am now the leader!");
};
// Acquire leadership
await leaderElection.AcquireLeadershipAsync(cancellationToken);
Provider Packages
Choose the provider that matches your infrastructure:
| Package | Backend | Use Case |
|---|---|---|
Excalibur.LeaderElection.SqlServer |
SQL Server | On-premises, Azure SQL |
Excalibur.LeaderElection.Redis |
Redis | High-performance, distributed cache |
Excalibur.LeaderElection.Consul |
HashiCorp Consul | Service mesh, multi-datacenter |
Excalibur.LeaderElection.Kubernetes |
Kubernetes Lease API | Cloud-native Kubernetes deployments |
Related Packages
Excalibur.Dispatch.LeaderElection.Abstractions- Canonical interfaces
License
This project is multi-licensed under:
See LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- Amazon.Extensions.Configuration.SystemsManager (>= 7.0.0)
- AspNetCore.HealthChecks.System (>= 8.0.0)
- AspNetCore.HealthChecks.UI (>= 9.0.0)
- AspNetCore.HealthChecks.UI.Client (>= 9.0.0)
- AspNetCore.HealthChecks.Uris (>= 8.0.0)
- AWSSDK.Core (>= 4.0.3.8)
- AWSSDK.Extensions.NETCore.Setup (>= 4.0.3.19)
- Ben.Demystifier (>= 0.4.1)
- BenchmarkDotNet (>= 0.15.4)
- CloudNative.CloudEvents (>= 2.8.0)
- CloudNative.CloudEvents.SystemTextJson (>= 2.8.0)
- Consul (>= 1.7.14.9)
- Cronos (>= 0.11.1)
- Dapper (>= 2.1.66)
- Excalibur.Dispatch.Abstractions (>= 3.0.0-alpha.26)
- Excalibur.Dispatch.LeaderElection.Abstractions (>= 3.0.0-alpha.26)
- Excalibur.Hosting (>= 3.0.0-alpha.26)
- FluentValidation (>= 12.0.0)
- FluentValidation.DependencyInjectionExtensions (>= 12.0.0)
- Grpc.Net.Client (>= 2.71.0)
- IdentityModel (>= 7.0.0)
- JsonNet.ContractResolvers (>= 2.0.0)
- KubernetesClient (>= 17.0.14)
- Medo.Uuid7 (>= 1.4.0)
- MemoryPack (>= 1.21.4)
- Microsoft.ApplicationInsights (>= 2.23.0)
- Microsoft.AspNetCore.Authorization (>= 9.0.9)
- Microsoft.CodeAnalysis.Analyzers (>= 3.11.0)
- Microsoft.CodeAnalysis.Common (>= 4.14.0)
- Microsoft.CodeAnalysis.CSharp (>= 4.14.0)
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 4.14.0)
- Microsoft.CodeAnalysis.Workspaces.Common (>= 4.14.0)
- Microsoft.EntityFrameworkCore (>= 9.0.9)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Caching.Memory (>= 10.0.0)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0)
- Microsoft.Extensions.Configuration.CommandLine (>= 10.0.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.0)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.0)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Hosting (>= 10.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging.Console (>= 10.0.0)
- Microsoft.Extensions.ObjectPool (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.0)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.0)
- Microsoft.IdentityModel.Tokens (>= 8.14.0)
- OpenTelemetry (>= 1.13.0)
- OpenTelemetry.Api (>= 1.13.0)
- OpenTelemetry.Exporter.Console (>= 1.13.0)
- OpenTelemetry.Exporter.Prometheus.AspNetCore (>= 1.13.0-beta.1)
- OpenTelemetry.Extensions.Hosting (>= 1.13.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.12.0)
- OpenTelemetry.Instrumentation.Http (>= 1.12.0)
- OpenTelemetry.Instrumentation.Runtime (>= 1.12.0)
- Polly (>= 8.6.4)
- Serilog (>= 3.1.1)
- Serilog.AspNetCore (>= 8.0.1)
- Serilog.Extensions.Hosting (>= 8.0.0)
- Serilog.Extensions.Logging (>= 8.0.0)
- Serilog.Sinks.Console (>= 5.0.1)
- Serilog.Sinks.Debug (>= 2.0.0)
- Serilog.Sinks.File (>= 5.0.0)
- System.IdentityModel.Tokens.Jwt (>= 8.14.0)
- System.Threading.RateLimiting (>= 10.0.0)
- YamlDotNet (>= 16.3.0)
-
net8.0
- Amazon.Extensions.Configuration.SystemsManager (>= 7.0.0)
- AspNetCore.HealthChecks.System (>= 8.0.0)
- AspNetCore.HealthChecks.UI (>= 9.0.0)
- AspNetCore.HealthChecks.UI.Client (>= 9.0.0)
- AspNetCore.HealthChecks.Uris (>= 8.0.0)
- AWSSDK.Core (>= 4.0.3.8)
- AWSSDK.Extensions.NETCore.Setup (>= 4.0.3.19)
- Ben.Demystifier (>= 0.4.1)
- BenchmarkDotNet (>= 0.15.4)
- CloudNative.CloudEvents (>= 2.8.0)
- CloudNative.CloudEvents.SystemTextJson (>= 2.8.0)
- Consul (>= 1.7.14.9)
- Cronos (>= 0.11.1)
- Dapper (>= 2.1.66)
- Excalibur.Dispatch.Abstractions (>= 3.0.0-alpha.26)
- Excalibur.Dispatch.LeaderElection.Abstractions (>= 3.0.0-alpha.26)
- Excalibur.Hosting (>= 3.0.0-alpha.26)
- FluentValidation (>= 12.0.0)
- FluentValidation.DependencyInjectionExtensions (>= 12.0.0)
- Grpc.Net.Client (>= 2.71.0)
- IdentityModel (>= 7.0.0)
- JsonNet.ContractResolvers (>= 2.0.0)
- KubernetesClient (>= 17.0.14)
- Medo.Uuid7 (>= 1.4.0)
- MemoryPack (>= 1.21.4)
- Microsoft.ApplicationInsights (>= 2.23.0)
- Microsoft.AspNetCore.Authorization (>= 9.0.9)
- Microsoft.CodeAnalysis.Analyzers (>= 3.11.0)
- Microsoft.CodeAnalysis.Common (>= 4.14.0)
- Microsoft.CodeAnalysis.CSharp (>= 4.14.0)
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 4.14.0)
- Microsoft.CodeAnalysis.Workspaces.Common (>= 4.14.0)
- Microsoft.EntityFrameworkCore (>= 9.0.9)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Caching.Memory (>= 10.0.0)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0)
- Microsoft.Extensions.Configuration.CommandLine (>= 10.0.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.0)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.0)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Hosting (>= 10.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging.Console (>= 10.0.0)
- Microsoft.Extensions.ObjectPool (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.0)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.0)
- Microsoft.IdentityModel.Tokens (>= 8.14.0)
- OpenTelemetry (>= 1.13.0)
- OpenTelemetry.Api (>= 1.13.0)
- OpenTelemetry.Exporter.Console (>= 1.13.0)
- OpenTelemetry.Exporter.Prometheus.AspNetCore (>= 1.13.0-beta.1)
- OpenTelemetry.Extensions.Hosting (>= 1.13.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.12.0)
- OpenTelemetry.Instrumentation.Http (>= 1.12.0)
- OpenTelemetry.Instrumentation.Runtime (>= 1.12.0)
- Polly (>= 8.6.4)
- Serilog (>= 3.1.1)
- Serilog.AspNetCore (>= 8.0.1)
- Serilog.Extensions.Hosting (>= 8.0.0)
- Serilog.Extensions.Logging (>= 8.0.0)
- Serilog.Sinks.Console (>= 5.0.1)
- Serilog.Sinks.Debug (>= 2.0.0)
- Serilog.Sinks.File (>= 5.0.0)
- System.Collections.Immutable (>= 10.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.0)
- System.IdentityModel.Tokens.Jwt (>= 8.14.0)
- System.IO.Pipelines (>= 10.0.0)
- System.Text.Json (>= 10.0.0)
- System.Threading.Channels (>= 10.0.0)
- System.Threading.RateLimiting (>= 10.0.0)
- YamlDotNet (>= 16.3.0)
-
net9.0
- Amazon.Extensions.Configuration.SystemsManager (>= 7.0.0)
- AspNetCore.HealthChecks.System (>= 8.0.0)
- AspNetCore.HealthChecks.UI (>= 9.0.0)
- AspNetCore.HealthChecks.UI.Client (>= 9.0.0)
- AspNetCore.HealthChecks.Uris (>= 8.0.0)
- AWSSDK.Core (>= 4.0.3.8)
- AWSSDK.Extensions.NETCore.Setup (>= 4.0.3.19)
- Ben.Demystifier (>= 0.4.1)
- BenchmarkDotNet (>= 0.15.4)
- CloudNative.CloudEvents (>= 2.8.0)
- CloudNative.CloudEvents.SystemTextJson (>= 2.8.0)
- Consul (>= 1.7.14.9)
- Cronos (>= 0.11.1)
- Dapper (>= 2.1.66)
- Excalibur.Dispatch.Abstractions (>= 3.0.0-alpha.26)
- Excalibur.Dispatch.LeaderElection.Abstractions (>= 3.0.0-alpha.26)
- Excalibur.Hosting (>= 3.0.0-alpha.26)
- FluentValidation (>= 12.0.0)
- FluentValidation.DependencyInjectionExtensions (>= 12.0.0)
- Grpc.Net.Client (>= 2.71.0)
- IdentityModel (>= 7.0.0)
- JsonNet.ContractResolvers (>= 2.0.0)
- KubernetesClient (>= 17.0.14)
- Medo.Uuid7 (>= 1.4.0)
- MemoryPack (>= 1.21.4)
- Microsoft.ApplicationInsights (>= 2.23.0)
- Microsoft.AspNetCore.Authorization (>= 9.0.9)
- Microsoft.CodeAnalysis.Analyzers (>= 3.11.0)
- Microsoft.CodeAnalysis.Common (>= 4.14.0)
- Microsoft.CodeAnalysis.CSharp (>= 4.14.0)
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 4.14.0)
- Microsoft.CodeAnalysis.Workspaces.Common (>= 4.14.0)
- Microsoft.EntityFrameworkCore (>= 9.0.9)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Caching.Memory (>= 10.0.0)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0)
- Microsoft.Extensions.Configuration.CommandLine (>= 10.0.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.0)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.0)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Hosting (>= 10.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging.Console (>= 10.0.0)
- Microsoft.Extensions.ObjectPool (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.0)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.0)
- Microsoft.IdentityModel.Tokens (>= 8.14.0)
- OpenTelemetry (>= 1.13.0)
- OpenTelemetry.Api (>= 1.13.0)
- OpenTelemetry.Exporter.Console (>= 1.13.0)
- OpenTelemetry.Exporter.Prometheus.AspNetCore (>= 1.13.0-beta.1)
- OpenTelemetry.Extensions.Hosting (>= 1.13.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.12.0)
- OpenTelemetry.Instrumentation.Http (>= 1.12.0)
- OpenTelemetry.Instrumentation.Runtime (>= 1.12.0)
- Polly (>= 8.6.4)
- Serilog (>= 3.1.1)
- Serilog.AspNetCore (>= 8.0.1)
- Serilog.Extensions.Hosting (>= 8.0.0)
- Serilog.Extensions.Logging (>= 8.0.0)
- Serilog.Sinks.Console (>= 5.0.1)
- Serilog.Sinks.Debug (>= 2.0.0)
- Serilog.Sinks.File (>= 5.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.0)
- System.IdentityModel.Tokens.Jwt (>= 8.14.0)
- System.IO.Pipelines (>= 10.0.0)
- System.Text.Json (>= 10.0.0)
- System.Threading.Channels (>= 10.0.0)
- System.Threading.RateLimiting (>= 10.0.0)
- YamlDotNet (>= 16.3.0)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Excalibur.LeaderElection:
| Package | Downloads |
|---|---|
|
Excalibur.LeaderElection.Consul
Consul-based leader election implementation for the Excalibur framework using session-based distributed locking. |
|
|
Excalibur.LeaderElection.InMemory
In-memory leader election implementation for the Excalibur framework. Suitable for single-process scenarios, testing, and development. |
|
|
Excalibur.LeaderElection.Kubernetes
Kubernetes-based leader election implementation for the Excalibur framework. Provides distributed coordination using Kubernetes Lease resources for cloud-native applications. |
|
|
Excalibur.Data.Postgres
Postgres database provider implementation for Excalibur data access layer. |
|
|
Excalibur.LeaderElection.Redis
Redis implementation of leader election for the Excalibur framework. Uses SET NX with TTL for distributed coordination with automatic lease renewal. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0-alpha.26 | 43 | 3/5/2026 |
| 3.0.0-alpha.19 | 57 | 2/26/2026 |