如果我有如下设置,假设我将有 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 最终会做的事情吗?还是我在做一些完全没有意义的事情?