【问题标题】:defining dispatcher for akka actor when named with UUID使用 UUID 命名时为 akka 演员定义调度程序
【发布时间】:2017-09-04 03:39:01
【问题描述】:

我有一个使用 Akka actor 在 java 上构建的播放应用程序。最近我遇到了与并行性相关的性能问题。我浏览了谷歌,发现我们可以将自定义/固定调度程序/执行程序分配给演员。在创建演员时,我已经用演员名称附加了唯一的 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

【问题讨论】:

  • 最新的配置参考 (doc.akka.io/docs/akka/2.4.17/java/dispatchers.html) 在其示例中没有通配符 *。你试过没有它吗?你确定没有错别字吗?你如何确认它仍在使用默认的?
  • @Diego,确认参与者使用默认调度程序的日志。

标签: java playframework akka actor dispatcher


【解决方案1】:

是的,您可以为您的演员明确分配调度程序。

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

【讨论】:

  • 我正在寻找一个不接触演员的选项。有没有办法通过配置提及?
【解决方案2】:

您必须指定要与您的actors一起使用的调度程序,通常您传递一个执行上下文,您可以在其中指定要使用的调度程序:

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

您还可以更改默认调度程序,如下所示: https://doc.akka.io/docs/akka/snapshot/scala/dispatchers.html#default-dispatcher

【讨论】:

    【解决方案3】:
    akka.actor.deployment {
      "/actorName*" {
        dispatcher =  mycustom-dispatcher
      }
    }
    

    以上行不通,因为(来自documentation):

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

    但是,您可以使用通配符来匹配参与者层次结构中某个级别的所有参与者。例如,假设您要为其使用自定义调度程序的所有参与者都位于akka://application/user/someParent/ 下。然后,您可以通过以下方式配置 someParent 的所有直接子代:

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

    阅读链接文档了解更多选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 2021-03-16
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      相关资源
      最近更新 更多