Akka.Discovery.Azure
1.5.31
Prefix Reserved
dotnet add package Akka.Discovery.Azure --version 1.5.31
NuGet\Install-Package Akka.Discovery.Azure -Version 1.5.31
<PackageReference Include="Akka.Discovery.Azure" Version="1.5.31" />
paket add Akka.Discovery.Azure --version 1.5.31
#r "nuget: Akka.Discovery.Azure, 1.5.31"
// Install Akka.Discovery.Azure as a Cake Addin #addin nuget:?package=Akka.Discovery.Azure&version=1.5.31 // Install Akka.Discovery.Azure as a Cake Tool #tool nuget:?package=Akka.Discovery.Azure&version=1.5.31
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. |
.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.31)
- Akka.Discovery (>= 1.5.31)
- Akka.Hosting (>= 1.5.31)
- Azure.Data.Tables (>= 12.8.3)
- Azure.Identity (>= 1.12.0)
- Google.Protobuf (>= 3.27.3)
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.31 | 531 | 11/11/2024 |
1.5.30 | 3,689 | 10/3/2024 |
1.5.29 | 112 | 10/1/2024 |
1.5.27 | 3,920 | 7/30/2024 |
1.5.26.1 | 2,182 | 7/16/2024 |
1.5.26 | 128 | 7/15/2024 |
1.5.26-beta3 | 880 | 7/2/2024 |
1.5.26-beta2 | 287 | 6/28/2024 |
1.5.26-beta1 | 103 | 6/27/2024 |
1.5.25.1 | 1,157 | 6/25/2024 |
1.5.25 | 577 | 6/17/2024 |
1.5.24 | 410 | 6/11/2024 |
1.5.19 | 3,040 | 4/17/2024 |
1.5.18-beta2 | 100 | 3/27/2024 |
1.5.18-beta1 | 112 | 3/20/2024 |
1.5.17.1 | 3,157 | 3/4/2024 |
1.5.15 | 4,870 | 1/12/2024 |
1.5.7 | 13,060 | 5/23/2023 |
1.5.5 | 400 | 5/8/2023 |
1.5.0 | 2,859 | 3/2/2023 |
1.5.0-beta6 | 142 | 3/1/2023 |
1.5.0-alpha4 | 138 | 2/17/2023 |
1.0.3 | 406 | 2/13/2023 |
1.0.2 | 265 | 2/8/2023 |
1.0.1 | 349 | 1/31/2023 |
1.0.0 | 409 | 1/18/2023 |
1.0.0-beta2 | 200 | 1/7/2023 |
1.0.0-beta1 | 127 | 1/6/2023 |
0.3.0-beta4 | 818 | 12/2/2022 |
0.3.0-beta3 | 319 | 11/7/2022 |
0.3.0-beta2 | 751 | 10/20/2022 |
0.3.0-beta1 | 186 | 10/6/2022 |
0.2.5-beta4 | 850 | 8/31/2022 |
0.2.5-beta3 | 379 | 8/16/2022 |
0.2.5-beta2 | 177 | 8/8/2022 |
0.2.5-beta1 | 176 | 8/1/2022 |
Update to [Akka.NET v1.5.31](https://github.com/akkadotnet/akka.net/releases/tag/1.5.31)
Update to [Akka.Hosting v1.5.31](https://github.com/akkadotnet/Akka.Hosting/releases/tag/1.5.31)
[Coordination.Azure: Fix LeaseActor bugs](https://github.com/akkadotnet/Akka.Management/pull/2891)
[Coordination.Azure: Fix AzureLease bugs](https://github.com/akkadotnet/Akka.Management/pull/2890)
[Coordination.KubernetesApi: Modernize codes](https://github.com/akkadotnet/Akka.Management/pull/2898)