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