Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# akka.net中带远程参与者的路由器_C#_Akka.net - Fatal编程技术网

C# akka.net中带远程参与者的路由器

C# akka.net中带远程参与者的路由器,c#,akka.net,C#,Akka.net,我正在尝试创建带有两个远程参与者的示例路由器。 这是我的密码 class Program { public const string AkkaConfig = @"{ akka { actor { provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote"" deployment {

我正在尝试创建带有两个远程参与者的示例路由器。 这是我的密码

class Program
{

        public const string AkkaConfig = @"{
        akka {
            actor {
                provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
                deployment {
                    /remoteecho1 {
                            remote = ""akka.tcp://Target@my1.lan:8090""
                    }
                    /remoteecho2 {
                            remote = ""akka.tcp://Target@my2.lan:8090""
                    }
            }
            remote{
                helios.tcp{
                    port = 0
                    hostname = localhost
                }
            }
        }
    }";

    static void Main(string[] args)
    {
        using (var system = ActorSystem.Create("Deployer", AkkaConfig))
        {
            var remoteEcho1 = system.ActorOf(Props.Create(() => new EchoActor()), "remoteecho1");
            var remoteEcho2 = system.ActorOf(Props.Create(() => new EchoActor()), "remoteecho2");

            var roundRobinGroup = new RoundRobinGroup(new[]
            {
                remoteEcho1,
                remoteEcho2
            });

            var coordinator = system.ActorOf(Props.Empty.WithRouter(roundRobinGroup),"coordinator");


            system.ActorOf(Props.Create(() => new HelloActor(coordinator)), "localactor");
            system.ActorSelection("/user/localactor").Tell(new SayHelloMessage());
            Console.ReadKey();
        }
    }
}

public class HelloActor:ReceiveActor
{
    private readonly IActorRef remoteActor;

    public HelloActor(IActorRef remoteActor)
    {
        this.remoteActor = remoteActor;
        Context.Watch(remoteActor);
        Receive<HelloMessage>(m =>
        {
            Console.WriteLine("Pingback from {1}: {0}", m.MessageText, Sender.Path);
        });

        Receive<SayHelloMessage>(m =>
        {
            var newMessage = new HelloMessage(Guid.NewGuid().ToString());
            remoteActor.Tell(newMessage);
        });
    }

    protected override void PreStart()
    {
        Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(TimeSpan.FromSeconds(1),
                TimeSpan.FromSeconds(1), Context.Self, new SayHelloMessage(), ActorRefs.NoSender);
    }
}

public class SayHelloMessage
{

}
类程序
{
公共常量字符串AkkaConfig=@”{
阿克卡{
演员{
provider=”“Akka.Remote.RemoteActorRefProvider,Akka.Remote“”
部署{
/远程回声1{
remote=”“akka。tcp://Target@my1.lan:8090“
}
/远程回声2{
remote=”“akka。tcp://Target@my2.lan:8090“
}
}
遥远的{
helios.tcp{
端口=0
主机名=本地主机
}
}
}
}";
静态void Main(字符串[]参数)
{
使用(var system=ActorSystem.Create(“Deployer”,AkkaConfig))
{
var remoteEcho1=system.ActorOf(Props.Create(()=>newechoactor()),“remoteEcho1”);
var remoteEcho2=system.ActorOf(Props.Create(()=>newechoactor()),“remoteEcho2”);
var roundRobinGroup=新的roundRobinGroup(新[]
{
remoteEcho1,
远程回声2
});
var coordinator=system.ActorOf(Props.Empty.WithRouter(roundRobinGroup),“coordinator”);
system.ActorOf(Props.Create(()=>newHelloActor(coordinator)),“localactor”);
system.ActorSelection(“/user/localactor”).Tell(new SayHelloMessage());
Console.ReadKey();
}
}
}
公共类HelloActor:ReceiveActor
{
私有只读IActorRef remoteActor;
公共HelloActor(IActorRef remoteActor)
{
this.remoteActor=remoteActor;
Watch(remoteActor);
接收(m=>
{
WriteLine(“pingbackfrom{1}:{0}”,m.MessageText,Sender.Path);
});
接收(m=>
{
var newMessage=newHelloMessage(Guid.NewGuid().ToString());
remoteActor.Tell(newMessage);
});
}
受保护的覆盖无效预启动()
{
Context.System.ScheduleTleRepeatedLycancelable(TimeSpan.FromSeconds(1),
TimeSpan.FromSeconds(1)、Context.Self、new SayHelloMessage()、ActorRefs.NoSender);
}
}
公共类SayHelloMessage
{
}
问题是下面代码中的remoteActor.Tell(newMessage)不向我的actor发送消息

Receive<SayHelloMessage>(m =>
    {
        var newMessage = new HelloMessage(Guid.NewGuid().ToString());
        remoteActor.Tell(newMessage);
    });
Receive(m=>
{
var newMessage=newHelloMessage(Guid.NewGuid().ToString());
remoteActor.Tell(newMessage);
});
当我将remoteEcho actor传递给HelloActor构造函数而不是路由器实例时,一切正常。如何使该示例与路由器一起工作