以下のようなセットアップがある場合、3 つのノードをクラスターに参加させ、ラウンド ロビン プールを使用するとします。
var worker = cluster.ActorOf(Props.Create<Worker>().WithRouter(
new ClusterRouterPool(
new RoundRobinPool(5),
new ClusterRouterPoolSettings(30, true, 1))), "worker");
「ワーカー」は、以下のように処理したメッセージの数を単純に覚えています
public class Worker : TypedActor, IHandle<int> {
readonly List<int> processed;
public Worker()
{
processed = new List<int>();
}
public void Handle(int message)
{
System.Threading.Thread.Sleep(new Random().Next(1000, 2000));
processed.Add(message);
Console.WriteLine("WORKER ({0}) [{1}:{2}], processed: {3}", message, Context.Self.Path, Cluster.Get(Context.System).SelfUniqueAddress.Address.Port, processed.Count);
}
異なるクラスタ ノード上の異なるアクター間で「処理済みリスト」を同期する方法はありますか? これは akka.net.cluster.sharding が最終的に行うことですか? それとも、まったく意味のないことをしていますか?