Skip to content

Latest commit

 

History

History
70 lines (49 loc) · 2.47 KB

dispatchers.md

File metadata and controls

70 lines (49 loc) · 2.47 KB

调度器

依赖

调度器(Dispatchers)是核心 Akka 的一部分,这意味着它们是akka-actor-typed依赖的一部分:

<!-- Maven -->
<dependency>
  <groupId>com.typesafe.akka</groupId>
  <artifactId>akka-actor-typed_2.12</artifactId>
  <version>2.5.23</version>
</dependency>

<!-- Gradle -->
dependencies {
  compile group: 'com.typesafe.akka', name: 'akka-actor-typed_2.12', version: '2.5.23'
}

<!-- sbt -->
libraryDependencies += "com.typesafe.akka" %% "akka-actor-typed" % "2.5.23"

简介

Akka 的MessageDispatcher是Akka Actor tick的原因,可以说,它是机器的引擎。所有MessageDispatcher实现也是一个执行器,这意味着它们可以用于执行任意代码,例如「Futures」。

选择调度器

当不指定自定义调度器的时候,默认调度器用于生成所有 Actor。这适用于所有不阻塞的 Actor。阻塞 Actor 需要小心管理,「这里」有更多的细节。

要选择调度器,请使用DispatcherSelector创建用于生成 Actor 的Props实例:

context.spawn(yourBehavior, "DefaultDispatcher");
context.spawn(
    yourBehavior, "ExplicitDefaultDispatcher", DispatcherSelector.defaultDispatcher());
context.spawn(yourBehavior, "BlockingDispatcher", DispatcherSelector.blocking());
context.spawn(
    yourBehavior,
    "DispatcherFromConfig",
    DispatcherSelector.fromConfig("your-dispatcher"));

DispatcherSelector有两种方便的方法来查找默认的调度器和自定义调度器,你可以使用它来执行阻塞的 Actor,例如不支持CompletionStages的遗留数据库 API。

最后一个示例演示如何从配置中加载自定义调度器,并在application.conf中对此进行答复:

your-dispatcher {
  type = Dispatcher
  executor = "thread-pool-executor"
  thread-pool-executor {
    fixed-pool-size = 32
  }
  throughput = 1
}

有关如何配置自定义调度器的完整详细信息,请参阅「非类型化文档」。


英文原文链接Dispatchers.


———— ☆☆☆ —— 返回 -> Akka 中文指南 <- 目录 —— ☆☆☆ ————