簡體   English   中英

在單獨的進程中部署Akka.net actor

[英]Deployment of Akka.net actors in separate processes

我開始學習Actor模型(使用Akka.net)並計划在當前項目中使用它。 我當前的任務是使用IFilter從不同的文件中提取文本。 IFilter是一組具有本機代碼的COM服務器。 有時它會掛起或處理收益太久。 我需要在這種情況下中止對問題文件的處理,並繼續在隊列中的下一個文件。 但我需要殺死整個過程以正確清理本機代碼。

另一個問題是生產力 - 在大多數情況下,我不能在一個進程中使用多個線程加載多個核心。 我懷疑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>

其他選擇是:

  • SingleThreadDispatcher
  • ThreadPoolDispatcher
  • ForkJoinDispatcher

但我在這里找不到在單獨進程中部署的選項。

我該如何解決這個問題?

您可以使用Akka.Remote和Remote Actor Deployments來實現這一點 - 您可以通過這種方式將actor遠程部署到網絡中的其他進程中。 我在這里的答案中列出了一些步驟: 我需要與多個遠程演員系統進行通信

如果您想查看如何執行此操作的示例,請查看Akka.NET項目中的RemoteDeploy示例: https//github.com/akkadotnet/akka.net/tree/dev/src/examples/RemoteDeploy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM