C# 如何在路由器上使用Akka.net
我已经开始使用akka.net,但速度非常慢。所以基本上我有: 生成10到100个请求的Http调用 这些请求对象将发送给参与者: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
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
generalSearchActor
的一个实例,它是顶级actor的子级
搜索者-这是路由器演员,它是搜索者演员的孩子
c1到c5-这些是搜索器路由器产生的providerSearchActor
的实例,它们是他的孩子
Props props = new RoundRobinPool(5).Props(Props.Create<providerSearchActor>());
var searcher = Context.ActorOf(props, "searcher");