Akka.Discovery.Azure
1.5.68
Prefix Reserved
dotnet add package Akka.Discovery.Azure --version 1.5.68
NuGet\Install-Package Akka.Discovery.Azure -Version 1.5.68
<PackageReference Include="Akka.Discovery.Azure" Version="1.5.68" />
<PackageVersion Include="Akka.Discovery.Azure" Version="1.5.68" />
<PackageReference Include="Akka.Discovery.Azure" />
paket add Akka.Discovery.Azure --version 1.5.68
#r "nuget: Akka.Discovery.Azure, 1.5.68"
#:package Akka.Discovery.Azure@1.5.68
#addin nuget:?package=Akka.Discovery.Azure&version=1.5.68
#tool nuget:?package=Akka.Discovery.Azure&version=1.5.68
Azure Table Storage Based Discovery
This module can be used as a discovery method for any cluster that has access to an Azure Table Storage service.
Configuring Using Akka.Hosting
You can programmatically configure Akka.Discovery.Azure using Akka.Hosting.
using var host = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services.AddAkka("actorSystem", (builder, provider) =>
{
builder.WithAzureDiscovery("your-azure-conection-string");
});
})
.Build();
await host.RunAsync();
Configuring Using HOCON
You will need to include these HOCON settings in your HOCON configuration:
akka.discovery {
method = azure
azure {
# The service name assigned to the cluster.
service-name = "default"
# The connection string used to connect to Azure Table hosting the cluster membership table
# MANDATORY FIELD: MUST be provided, else the discovery plugin WILL throw an exception.
connection-string = "<connection-string>"
}
}
Notes
- The
akka.discovery.azure.connection-stringsetting is mandatory - For
Akka.Discovery.Azureto work with multiple clusters, each cluster will have to have differentakka.discovery.azure.service-namesettings.
Configuring Using ActorSystemSetup
You can programmatically configure Akka.Discovery.Azure using the AzureDiscoverySetup class.
var config = ConfigurationFactory.ParseString(File.ReadAllText("app.conf"));
var bootstrap = BootstrapSetup.Create()
.WithConfig(config) // load HOCON
.WithActorRefProvider(ProviderSelection.Cluster.Instance); // launch Akka.Cluster
var azureSetup = new AzureDiscoverySetup()
.WithConnectionString(connectionString);
var actorSystemSetup = bootstrap.And(azureSetup);
var system = ActorSystem.Create("my-system", actorSystemSetup);
Using Discovery Together with Akka.Management and Cluster.Bootstrap
All discovery plugins are designed to work with Cluster.Bootstrap to provide an automated way to form a cluster that is not based on hard wired seeds configuration.
Configuring using Akka.Hosting
With Akka.Hosting, you can wire them together like this:
using var host = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services.AddAkka("actorSystem", (builder, provider) =>
{
builder
// Add Akka.Remote support
.WithRemoting(hostname: "", port: 4053)
// Add Akka.Cluster support
.WithClustering()
// Add Akka.Management.Cluster.Bootstrap support
.WithClusterBootstrap()
// Add Akka.Discovery.Azure support
.WithAzureDiscovery("your-azure-conection-string");
});
})
.Build();
await host.RunAsync();
Configuring using HOCON configuration
Some HOCON configuration is needed to make discovery work with Cluster.Bootstrap:
akka.discovery.method = azure
akka.discovery.azure.connection-string = "UseDevelopmentStorage=true"
akka.management.http.routes = {
cluster-bootstrap = "Akka.Management.Cluster.Bootstrap.ClusterBootstrapProvider, Akka.Management.Cluster.Bootstrap"
}
You then start the cluster bootstrapping process by calling:
await AkkaManagement.Get(system).Start();
await ClusterBootstrap.Get(system).Start();
A more complete example:
var config = ConfigurationFactory
.ParseString(File.ReadAllText("app.conf""))
.WithFallback(ClusterBootstrap.DefaultConfiguration())
.WithFallback(AkkaManagementProvider.DefaultConfiguration());
var bootstrap = BootstrapSetup.Create()
.WithConfig(config) // load HOCON
.WithActorRefProvider(ProviderSelection.Cluster.Instance); // launch Akka.Cluster
var azureSetup = new AzureDiscoverySetup()
.WithConnectionString(connectionString);
var actorSystemSetup = bootstrap.And(azureSetup);
var system = ActorSystem.Create("my-system", actorSystemSetup);
var log = Logging.GetLogger(system, this);
await AkkaManagement.Get(system).Start();
await ClusterBootstrap.Get(system).Start();
var cluster = Cluster.Get(system);
cluster.RegisterOnMemberUp(() => {
var upMembers = cluster.State.Members
.Where(m => m.Status == MemberStatus.Up)
.Select(m => m.Address.ToString());
log.Info($"Current up members: [{string.Join(", ", upMembers)}]")
});
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 was computed. 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 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Akka.Cluster (>= 1.5.68)
- Akka.Discovery (>= 1.5.68)
- Akka.Hosting (>= 1.5.68)
- Azure.Data.Tables (>= 12.10.0)
- Azure.Identity (>= 1.14.2)
- Google.Protobuf (>= 3.30.2)
-
net6.0
- Akka.Cluster (>= 1.5.68)
- Akka.Discovery (>= 1.5.68)
- Akka.Hosting (>= 1.5.68)
- Azure.Data.Tables (>= 12.10.0)
- Azure.Identity (>= 1.14.2)
- Google.Protobuf (>= 3.30.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on Akka.Discovery.Azure:
| Repository | Stars |
|---|---|
|
petabridge/akkadotnet-code-samples
Akka.NET professional reference code samples
|
|
|
petabridge/DrawTogether.NET
Multi-player MS Paint application. Built with Akka.NET, Blazor, and .NET Aspire.
|
| Version | Downloads | Last Updated |
|---|---|---|
| 1.5.68 | 480 | 5/31/2026 |
| 1.5.67 | 2,425 | 4/28/2026 |
| 1.5.65 | 1,395 | 4/11/2026 |
| 1.5.63 | 1,120 | 3/31/2026 |
| 1.5.62 | 2,152 | 3/9/2026 |
| 1.5.61 | 5,404 | 2/27/2026 |
| 1.5.59 | 2,240 | 1/27/2026 |
| 1.5.57 | 2,739 | 12/16/2025 |
| 1.5.55 | 7,964 | 10/27/2025 |
| 1.5.52 | 5,521 | 10/10/2025 |
| 1.5.50 | 2,042 | 9/23/2025 |
| 1.5.48 | 1,218 | 8/29/2025 |
| 1.5.45.1 | 4,539 | 7/10/2025 |
| 1.5.45 | 1,029 | 7/8/2025 |
| 1.5.37 | 13,276 | 1/23/2025 |
| 1.5.35 | 1,776 | 1/15/2025 |
| 1.5.33 | 2,860 | 12/31/2024 |
| 1.5.31 | 5,151 | 11/11/2024 |
| 1.5.30 | 7,666 | 10/3/2024 |
| 1.5.29 | 292 | 10/1/2024 |
* Update to [Akka.NET v1.5.68](https://github.com/akkadotnet/akka.net/releases/tag/1.5.68)
* Update to [Akka.Hosting v1.5.68](https://github.com/akkadotnet/Akka.Hosting/releases/tag/1.5.68)