在我的 Akka.Net 集群中,我有几个节点。当我成功加入集群时,我想发起通信。我可以在日志中看到欢迎加入集群:
Welcome from [akka.tcp://Animatroller@hakan-el:8899]
但我看不到为此引发的任何我可以订阅的事件。
在我的 Akka.Net 集群中,我有几个节点。当我成功加入集群时,我想发起通信。我可以在日志中看到欢迎加入集群:
Welcome from [akka.tcp://Animatroller@hakan-el:8899]
但我看不到为此引发的任何我可以订阅的事件。
通常,在这种情况下,您想要订阅ClusterEvent.MemberUp
,一旦新节点成为集群的一部分,当前参与者将收到。
处理此类事件的参与者示例:
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
是处理程序的附加过滤器,这意味着它将仅在此参与者所在的当前节点加入集群时才被处理。从其他节点发送的向上事件将被忽略。