我对 AKKA.NET 将“SampleActor”制作为“CustomCluster”中的单例有一个有趣的问题。不会引发异常或警告。在调试过程中,我无法将 SampleActor 初始化为集群单例,即使在单元测试中,我也能够以完整路径毫无问题地将该 ActorRef 获取到该演员,但该演员似乎没有初始化(构造函数和其他“OnStart”类型的功能没有被击中。我已经尝试直接向参与者“告诉”消息,以普通方式使用它(如集群中的“OrdinaryActor”)它正在接收这些消息并且运行良好。通过代理发送消息并使用完整的actor ref路径不工作,我确信这是因为演员没有被初始化。
在这一点上我错过了什么?有完整的配置akka.cluster.singleton
,我尝试了许多不同的方法。
private static ActorSystem _actorSystem;
....
_actorSystem = ActorSystem.Create("CustomCluster", systemSetup);
var me = ServiceProvider.GetService<IActorRef>();
_actorSystem.ActorOf(
Props.Create(() => new OrdinaryActor(me)),
nameof(OrdinaryActor)); //Joins Cluster no problems
ClusterSingletonManagerSettings settings =
ClusterSingletonManagerSettings.Create( _actorSystem ).WithRole("worker");
_actorSystem.ActorOf( ClusterSingletonManager.Props(
Props.Create( () => new SampleActor(me)),
PoisonPill.Instance, settings ), "SampleActorSingleton" );
ClusterSingletonProxySettings proxySettings =
ClusterSingletonProxySettings.Create( _actorSystem ).WithRole( "worker" );
_actorSystem.ActorOf( ClusterSingletonProxy.Props( "/user/SampleActorSingleton", proxySettings ), "SampleActorSingletonProxy");
//Initialization of 'SampleActor is not being hit, no exceptions, I am able to get Actor ref but it is not functional'