我开始学习Actor模型(使用Akka.net)并计划在当前项目中使用它。我当前的任务是使用IFilter从不同的文件中提取文本。 IFilter是一组具有本机代码的COM服务器。有时它会挂起或处理收益太久。我需要在这种情况下中止对问题文件的处理,并继续在队列中的下一个文件。但我需要杀死整个过程以正确清理本机代码。
另一个问题是生产力 - 在大多数情况下,我无法在一个进程中使用多个线程加载多个核心。我怀疑IFilter里面有锁。但是如果我运行我的测试应用程序的多个副本(它模拟多进程模式),我可以使用CPU的全部功能。
我的问题是:我如何在不同的流程中部署某些角色?
我发现演员的部署策略可以通过这种方式在配置中指定(来自Petabrige的演讲样本):
<akka>
<hocon>
<![CDATA[
akka {
actor {
deployment {
/charting {
# causes ChartingActor to run on the UI thread for WinForms
dispatcher = akka.actor.synchronized-dispatcher
}
}
}
}
]]>
</hocon>
</akka>
其他选项包括:
但我在这里找不到在单独进程中部署的选项。
我该如何解决这个问题?
答案 0 :(得分:3)
您可以使用Akka.Remote和Remote Actor Deployments来实现此目的 - 您可以通过这种方式将actor远程部署到网络中的其他进程中。我在答案中列出了一些步骤:I need to communicate with multiple remote actor systems
如果您想看一个如何执行此操作的示例,请查看Akka.NET项目中的RemoteDeploy示例:https://github.com/akkadotnet/akka.net/tree/dev/src/examples/RemoteDeploy