簡體   English   中英

用UUID命名時,為akka actor定義調度程序

[英]defining dispatcher for akka actor when named with UUID

我有一個使用Akka actor在java上構建的播放應用程序。 最近,我遇到了與並行性有關的性能問題。 我遍歷了Google,發現我們可以為角色分配自定義/固定的調度程序/執行程序。 在創建actor時,我已經給actor命名了actor名稱,並附加了唯一的ID。

當演員名稱后附加唯一ID時,是否有一種方法可以指定我的演員使用固定分派器。

我正在嘗試按以下方式更新application.conf,但未獲得預期的結果。 它仍在使用默認調度程序。

我的演員位於akka:// application / user / actor

akka.actor.deployment {
  "/actorName*" {
       dispatcher =  mycustom-dispatcher
  }
}

我使用的參考資料: http : //doc.akka.io/docs/akka/2.1.4/java/dispatchers.html#Setting_the_dispatcher_for_an_Actor

是的,您可以為您的演員明確分配調度員。

import akka.actor.Props
val myActor =
  context.actorOf(Props[MyActor].withDispatcher("my-dispatcher"), "myactor1")

或Java變體:

ActorRef myActor =
  system.actorOf(Props.create(MyUntypedActor.class).withDispatcher("my-dispatcher"),
    "myactor3");

配置

my-dispatcher {
  executor = "thread-pool-executor"
  type = PinnedDispatcher
}

查看更多akka-docs

您必須指定與actor一起使用的調度程序,通常您傳遞一個執行上下文,在其中可以指定要使用的調度程序:

implicit val executionContext = system.dispatchers.lookup("my-dispatcher")

您還可以像在此指定的那樣更改默認調度程序: https : //doc.akka.io/docs/akka/snapshot/scala/dispatchers.html#default-dispatcher

akka.actor.deployment {
  "/actorName*" {
    dispatcher =  mycustom-dispatcher
  }
}

上面的方法不起作用,因為(來自文檔 ):

  • 通配符不能用於部分匹配部分,例如: /foo*/bar/f*o/bar等。

但是,您可以使用通配符來匹配參與者層次結構中特定級別的所有參與者。 例如,假設您要使用自定義調度akka://application/user/someParent/所有參與者都位於akka://application/user/someParent/ 然后,您可以通過以下方式配置someParent的所有直接子代:

akka.actor.deployment {
  "/someParent/*" {
    dispatcher =  mycustom-dispatcher
  }
}

閱讀鏈接的文檔以獲取更多選項。

暫無
暫無

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

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