当我的节点加入集群时,Akka.net 集群中是否有事件?

Is there an event in Akka.net cluster for when my node has joined a cluster?

在我的 Akka.Net 集群中,我有几个节点。当我成功加入集群时,我想发起通信。我可以在日志中看到我欢迎加入集群:

Welcome from [akka.tcp://Animatroller@hakan-el:8899]

但我看不到为此引发的任何我可以订阅的事件。

通常在这种情况下,您想要的是订阅ClusterEvent.MemberUp,一旦新节点成为集群的一部分,当前参与者将收到。

actor 处理此类事件的示例:

class MyActor : ReceiveActor 
{
    private readonly Cluster cluster = Cluster.Get(Context.System);
    public MyActor()
    {
        Receive<ClusterEvent.MemberUp>(memberUp => memberUp.Member.Address == cluster.SelfAddress, memberUp =>
        {
            // handle current node up
        });
    }

    protected override void PreStart()
    {
        cluster.Subscribe(Self, new []{ typeof(ClusterEvent.MemberUp)});
    }

    protected override void PostStop()
    {
        cluster.Unsubscribe(Self);
        base.PostStop();
    }
}

在这种情况下,memberUp => memberUp.Member.Address == cluster.SelfAddress 是处理程序的附加过滤器,这意味着它将仅在当前节点(该参与者所在的节点)加入集群时才被处理。从其他节点发送的向上事件将被忽略。