Akka.Discovery.Azure
1.5.26
Prefix Reserved
See the version list below for details.
dotnet add package Akka.Discovery.Azure --version 1.5.26
NuGet\Install-Package Akka.Discovery.Azure -Version 1.5.26
<PackageReference Include="Akka.Discovery.Azure" Version="1.5.26" />
<PackageVersion Include="Akka.Discovery.Azure" Version="1.5.26" />
<PackageReference Include="Akka.Discovery.Azure" />
paket add Akka.Discovery.Azure --version 1.5.26
#r "nuget: Akka.Discovery.Azure, 1.5.26"
#addin nuget:?package=Akka.Discovery.Azure&version=1.5.26
#tool nuget:?package=Akka.Discovery.Azure&version=1.5.26
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-string
setting is mandatory - For
Akka.Discovery.Azure
to work with multiple clusters, each cluster will have to have differentakka.discovery.azure.service-name
settings.
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 was computed. 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.26)
- Akka.Discovery (>= 1.5.26)
- Akka.Hosting (>= 1.5.25)
- Azure.Data.Tables (>= 12.8.3)
- Azure.Identity (>= 1.12.0)
- Google.Protobuf (>= 3.27.1)
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.5.37 | 8,384 | 1/23/2025 |
1.5.35 | 1,567 | 1/15/2025 |
1.5.33 | 2,638 | 12/31/2024 |
1.5.31 | 4,144 | 11/11/2024 |
1.5.30 | 7,363 | 10/3/2024 |
1.5.29 | 151 | 10/1/2024 |
1.5.27 | 4,793 | 7/30/2024 |
1.5.26.1 | 2,213 | 7/16/2024 |
1.5.26 | 240 | 7/15/2024 |
1.5.26-beta3 | 896 | 7/2/2024 |
1.5.26-beta2 | 308 | 6/28/2024 |
1.5.26-beta1 | 122 | 6/27/2024 |
1.5.25.1 | 1,184 | 6/25/2024 |
1.5.25 | 607 | 6/17/2024 |
1.5.24 | 426 | 6/11/2024 |
1.5.19 | 3,060 | 4/17/2024 |
1.5.18-beta2 | 115 | 3/27/2024 |
1.5.18-beta1 | 128 | 3/20/2024 |
1.5.17.1 | 3,208 | 3/4/2024 |
1.5.15 | 5,006 | 1/12/2024 |
1.5.7 | 13,467 | 5/23/2023 |
1.5.5 | 434 | 5/8/2023 |
1.5.0 | 2,894 | 3/2/2023 |
1.5.0-beta6 | 173 | 3/1/2023 |
1.5.0-alpha4 | 168 | 2/17/2023 |
1.0.3 | 438 | 2/13/2023 |
1.0.2 | 302 | 2/8/2023 |
1.0.1 | 385 | 1/31/2023 |
1.0.0 | 473 | 1/18/2023 |
1.0.0-beta2 | 233 | 1/7/2023 |
1.0.0-beta1 | 165 | 1/6/2023 |
0.3.0-beta4 | 851 | 12/2/2022 |
0.3.0-beta3 | 350 | 11/7/2022 |
0.3.0-beta2 | 788 | 10/20/2022 |
0.3.0-beta1 | 218 | 10/6/2022 |
0.2.5-beta4 | 886 | 8/31/2022 |
0.2.5-beta3 | 414 | 8/16/2022 |
0.2.5-beta2 | 216 | 8/8/2022 |
0.2.5-beta1 | 215 | 8/1/2022 |
Update to [Akka.NET v1.5.26](https://github.com/akkadotnet/akka.net/releases/tag/1.5.26)
[Discovery.KubernetesApi: Add multi-config support](https://github.com/akkadotnet/Akka.Management/pull/2596)
[Discovery.Azure: Add multi-config support](https://github.com/akkadotnet/Akka.Management/pull/2595)
[Discovery.Azure: Always apply TableClientOptions to TableClient](https://github.com/akkadotnet/Akka.Management/pull/2650)
[Discovery.Azure: Implement missing IExtension implementation](https://github.com/akkadotnet/Akka.Management/pull/2653)
[Discovery.Azure: Refactor `AkkaDiscoveryOptions` to `AzureDiscoveryOptions`](https://github.com/akkadotnet/Akka.Management/pull/2653)
[Discovery.Config: Add multi-config support](https://github.com/akkadotnet/Akka.Management/pull/2604)
[Discovery.AwsApi: Add multi-config support](https://github.com/akkadotnet/Akka.Management/pull/2651)
[ClusterBootstrap: Update probe-interval and stale contact point timeout calculation](https://github.com/akkadotnet/Akka.Management/pull/2601)
[Management: Cluster bootstrap endpoint returns empty seed if it is not part of a cluster](https://github.com/akkadotnet/Akka.Management/pull/2636)
[Management: Add Remote address and ClusterClientReceptionist actor path endpoint](https://github.com/akkadotnet/Akka.Management/pull/2614)
[Management: Harden ClusterClientReceptionist actor path endpoint](https://github.com/akkadotnet/Akka.Management/pull/2615)
Update dependency NuGet package versions to latest versions
Akka.Discovery.Azure AkkaDiscoveryOptions is not obsolete**
`AkkaDiscoveryOptions` class has been made obsolete because the name was a typo, the correct class to use from now on is `AzureDiscoveryOptions`. The old `AkkaDiscoveryOptions` class is marked with the `Obsolete` attribute so users can migrate to the correct option class in the future.