C# 如何在路由器上使用Akka.net

C# 如何在路由器上使用Akka.net,c#,akka.net,C#,Akka.net,我已经开始使用akka.net,但速度非常慢。所以基本上我有: 生成10到100个请求的Http调用 这些请求对象将发送给参与者: var system = ActorSystem.Create("MySystem"); var searcher = system.ActorOf<generalSearchActor>("searcherAll"); searcher.Tell(sortedReques

我已经开始使用akka.net,但速度非常慢。所以基本上我有:

生成10到100个请求的Http调用

这些请求对象将发送给参与者:

 var system = ActorSystem.Create("MySystem");
                    var searcher = system.ActorOf<generalSearchActor>("searcherAll");
                    searcher.Tell(sortedRequests);
var system=ActorSystem.Create(“MySystem”);
var searcher=system.ActorOf(“searcherAll”);
searcher.Tell(分类请求);
然后在actor内部,我创建了一个路由器,并告诉路由器所有的请求:

public generalSearchActor()
{
    Receive<List<HotelAvRequest>>(searchList =>
    {
        try { 
        Props props = new RoundRobinPool(5).Props(Props.Create<providerSearchActor>());
        var system = ActorSystem.Create("MySystem");
        var searcher = system.ActorOf(props, "searcher");

        foreach (var reques in searchList)
        {

            searcher.Tell(reques);

        }
        }catch(Exception e)
        {
            string a = "";
        }
    }
  );
}
public-generalSearchActor()
{
接收(搜索列表=>
{
试试{
Props Props=newroundrobinpool(5).Props(Props.Create());
var system=ActorSystem.Create(“MySystem”);
var searcher=system.ActorOf(props,searcher);
foreach(搜索列表中的var需求)
{
搜索者。告诉(请求);
}
}捕获(例外e)
{
字符串a=“”;
}
}
);
}
这是可行的,但需要花很多时间来处理。到目前为止,还没有添加遥控器

很抱歉,我知道有文档,但我不确定我是否做错了什么


谢谢

您似乎正在初始化两个独立的actor系统。一个在开头,另一个在
generalSearchActor
中。这很可能是您正在经历的减速的原因

Akka.net应该使用分层的参与者结构。通过初始化actor系统,您可以自动创建顶级actor,然后其他actor应该作为顶级actor的子级或其他子级的子级跟随(它们可以嵌套多次)

您可以在此处正确创建顶级参与者的子级:

var system = ActorSystem.Create("MySystem");
var searcher = system.ActorOf<generalSearchActor>("searcherAll");
searcher.Tell(sortedRequests);
生成的参与者层次结构将类似于:

  • MySystem/user/searcherAll
  • MySystem/user/searcherAll/searcher
  • MySystem/user/searcherAll/searcher/c1
  • MySystem/user/searcherAll/searcher/c2
  • MySystem/user/searcherAll/searcher/c3
  • MySystem/user/searcherAll/searcher/c4
  • MySystem/user/searcherAll/searcher/c5
searcherAll-这是
generalSearchActor
的一个实例,它是顶级actor的子级

搜索者-这是路由器演员,它是搜索者演员的孩子

c1到c5-这些是搜索器路由器产生的
providerSearchActor
的实例,它们是他的孩子

Props props = new RoundRobinPool(5).Props(Props.Create<providerSearchActor>());
var searcher = Context.ActorOf(props, "searcher");