我正在尝试启动与远程actor的通信,如果远程系统启动并且运行代码工作正常,但是如果在第一次尝试通信时远程系统没有运行,则所有后续尝试也会失败。 / p>
var system = ActorSystem.Create("myClient");
string line = null;
while (line != "x")
{
Console.WriteLine("Trying");
var esb = system.ActorSelection("akka.tcp://myRemoteSystem@localhost:9391" + "/user/myActor");//.ResolveOne(TimeSpan.FromSeconds(10)).Result;
esb.Tell(new MyMessage());
line = Console.ReadLine();
}
我有一个简单的控制台应用程序,每次按Enter键(如上所示)都会尝试与远程系统通信以显示场景。
如果远程系统在此客户端运行之前正在运行,则连接正常。 如果第一次尝试没有运行,然后启动远程系统,则Tell将永远不会到达远程系统。 (或者至少不是在我试过的10多分钟内)
我尝试将隔离时间调整为2秒和门控时间。这些似乎都没有影响。
我还尝试使用类似的结果解析IActorRef,一旦抛出ActorNotFound异常,即使远程系统启动并运行,它也会重复此行为。
我做错了吗?有没有办法在尝试解析远程actor之前判断远程系统是否正在运行。