Skip to content

Commit

Permalink
Apply discovery settings on per cluster client basis
Browse files Browse the repository at this point in the history
  • Loading branch information
Arkatufus committed Jul 26, 2024
1 parent 3c5699a commit 5e40d64
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
13 changes: 8 additions & 5 deletions src/Akka.Cluster.Hosting/AkkaClusterHostingExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1650,17 +1650,20 @@ private static AkkaConfigurationBuilder ApplyClusterClientDiscovery<TKey>(
this AkkaConfigurationBuilder builder,
ClusterClientDiscoveryOptions options)
{
options.Apply(builder);
options.DiscoveryOptions.Apply(builder);

builder
.AddHocon(ClusterClientReceptionist.DefaultConfig(), HoconAddMode.Append)
.AddHocon(DiscoveryProvider.DefaultConfiguration(), HoconAddMode.Append);

builder.WithActors((system, registry) =>
{
var clusterClient = system.ActorOf(ClusterClient.Props(ClusterClientSettings.Create(system)), options.ClientActorName);
registry.TryRegister<TKey>(clusterClient);
});
{
var config = options.ToConfig()
.WithFallback(system.Settings.Config.GetConfig("akka.cluster.client"));
var clusterClient = system.ActorOf(ClusterClient.Props(ClusterClientSettings.Create(config)), options.ClientActorName);
registry.TryRegister<TKey>(clusterClient);
});

return builder;
}
Expand Down
13 changes: 7 additions & 6 deletions src/Akka.Cluster.Hosting/ClusterClientDiscoveryOptions.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Text;
using Akka.Cluster.Tools.Client;
using Akka.Configuration;
using Akka.Hosting;

namespace Akka.Cluster.Hosting;
Expand Down Expand Up @@ -49,13 +50,14 @@ public sealed class ClusterClientDiscoveryOptions
/// The name of the cluster client actor
/// </summary>
public string? ClientActorName { get; set; }

public Config ToConfig() => ToString();

internal void Apply(AkkaConfigurationBuilder builder)
public override string ToString()
{
Validate();

var sb = new StringBuilder();
sb.AppendLine("akka.cluster.client {");
sb.AppendLine("use-initial-contacts-discovery = true");
sb.AppendLine("discovery {");
sb.AppendLine($"method = {DiscoveryOptions.ConfigPath.ToHocon()}");
Expand All @@ -68,10 +70,9 @@ internal void Apply(AkkaConfigurationBuilder builder)
sb.AppendLine($"interval = {RetryInterval.ToHocon()}");
if (Timeout is not null)
sb.AppendLine($"resolve-timeout = {Timeout.ToHocon()}");

sb.AppendLine("}}");

DiscoveryOptions.Apply(builder);
sb.AppendLine("}");

return sb.ToString();
}

private void Validate()
Expand Down

0 comments on commit 5e40d64

Please sign in to comment.