在Akka Sharding上启动时初始化实体



如何在集群启动时预先启动实体?我已经找到了一种方法,但我认为这不是正确的方法。它包括向每个节点上的shard区域发送StartEntity(entityId(消息。假设我有1000个实体要初始化。它似乎非常不符合要求(由于每个节点都试图初始化远程实体,集群中的消息爆炸(!

val shardRegion: ActorRef[ShardingEnvelope[Command]] =
sharding.init(Entity(HelloServiceEntity)(createBehavior = ctx => HelloWorldService()))
Seq("S0", "S1").foreach { id =>
shardRegion ! StartEntity(id)
}

有什么有效的方法来实现我想要的吗?我找不到关于它的官方帖子或文件。我做错了吗?

我有个主意!我可以使用一个集群Singleton,它的工作是初始化实体。这是我想出的最有效的方法,不需要深入内部,也不需要提出拉取请求:joy:

最新更新