文档

§Pekko Typed 的集群分片(孵化中)

Play 提供了一个用于与 Pekko 集群分片 Typed 集成的孵化模块。要启用此模块,请将以下依赖项添加到您的构建中

Java
libraryDependencies += javaClusterSharding
Scala
libraryDependencies += clusterSharding

§用法

在将 集群分片 作为依赖项正确包含后,您可以使用依赖项注入获取实例。我们为运行时和编译时依赖项注入提供了一些帮助程序。

请注意,Play 仅提供 DI 机制。将可用于注入的类实例是 Pekko 的 pekko.cluster.sharding.typed.javadsl.ClusterSharding(适用于 Java)和 pekko.cluster.sharding.typed.scaladsl.ClusterSharding(适用于 Scala)。

§运行时依赖项注入

运行时依赖项注入与 Play 中任何其他运行时 DI 模块的工作方式相同,这意味着添加依赖项会自动启用模块,并且实例可用于注入。

§编译时依赖项注入

如果您使用的是编译时 DI,则可以使用以下组件访问 集群分片

Java
import play.ApplicationLoader;
import play.BuiltInComponentsFromContext;
import play.cluster.sharding.typed.ClusterShardingComponents;
import play.controllers.AssetsComponents;
import play.filters.components.HttpFiltersComponents;
import play.routing.Router;

public class ComponentsWithClusterSharding extends BuiltInComponentsFromContext
    implements ClusterShardingComponents, AssetsComponents, HttpFiltersComponents {

  public ComponentsWithClusterSharding(ApplicationLoader.Context context) {
    super(context);
  }

  @Override
  public Router router() {
    return Router.empty();
  }
}
Scala
import play.api._
import play.api.cluster.sharding.typed.ClusterShardingComponents
import play.api.routing.Router
import play.api.ApplicationLoader.Context

class MyApplicationLoader extends ApplicationLoader {
  def load(context: Context) = {
    new ComponentsWithClusterSharding(context).application
  }
}

class ComponentsWithClusterSharding(context: Context)
    extends BuiltInComponentsFromContext(context)
    with play.filters.HttpFiltersComponents
    with ClusterShardingComponents {
  lazy val router = Router.empty
}

§集群形成

当包含此模块时,应用程序的ActorSystem将被配置为集群环境。因此,它将启动Pekko 远程并默认将其绑定到端口17355(有关如何配置不同端口,请参阅Pekko 文档)。

此外,您的应用程序的 Actor System 预计会与您的应用程序的其他实例形成集群。请参阅Pekko 文档,了解如何形成 Pekko 集群。

下一步:为 Play 贡献代码


发现此文档中的错误?此页面的源代码可以在此处找到。在阅读文档指南后,请随时贡献拉取请求。有疑问或建议要分享?请访问我们的社区论坛,与社区开始对话。