gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:07:54 44 4
gpt4 key购买 nike

开始学习Actor模型(使用Akka.net),打算在现在的项目中使用。我当前的任务是使用 IFilter 从不同的文件中提取文本。 IFilter 是一组带有 native 代码的 COM 服务器。有时它可能会挂起或处理 yield 太长。在这种情况下,我需要中止对问题文件的处理,并继续处理队列中的下一个文件。但我需要终止整个进程才能正确清理 native 代码。

另一个问题是生产力——在大多数情况下,我无法在单个进程中使用多个线程加载多个内核。我怀疑 IFilter 里面有一把锁。但是如果我运行我的测试应用程序的多个副本(它模拟多进程模式),我可以使用 CPU 的全部功能。

我的问题是:如何在单独的流程中部署一些参与者

我发现可以通过这种方式在配置中指定 actor 的部署策略(来自 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>

其他选项是:

  • 单线程调度器
  • 线程池调度器
  • ForkJoinDispatcher

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

我该如何解决这个问题?

最佳答案

您可以使用 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

关于c# - 在单独的进程中部署 Akka.net 参与者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154655/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com