c#-在单独的过程中部署Akka.net参与者

我开始学习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>

其他选项是:

> SingleThreadDispatcher
>线程池分派器
> ForkJoinDispatcher

但是我在这里找不到单独流程中的部署选项.

我该如何解决这个问题?

解决方法:

您可以使用Akka.Remote和Remote Actor部署来完成此任务-您可以通过这种方式将actor远程部署到整个网络的其他进程中.我在这里回答了一些步骤:I need to communicate with multiple remote actor systems

如果您想查看有关此操作的示例,请查看Akka.NET项目中的RemoteDeploy示例:https://github.com/akkadotnet/akka.net/tree/dev/src/examples/RemoteDeploy

上一篇:JAVA整蛊朋友小游戏之屎王争霸赛


下一篇:Mysql优化