Инициализировать сущность при запуске в Akka Sharding - PullRequest
0 голосов
/ 25 апреля 2020

Как я могу предварительно запустить объект при запуске кластера? Я нашел способ сделать это, но я думаю, что это не правильный способ сделать. Он состоит из отправки сообщения StartEntity (entityId) в область сегмента на каждом узле. Предположим, у меня есть 1000 объектов для инициализации. Это кажется очень неэффективным (взрыв сообщений в кластере, поскольку каждый узел пытается инициализировать удаленный объект)!

    val shardRegion: ActorRef[ShardingEnvelope[Command]] =
    sharding.init(Entity(HelloServiceEntity)(createBehavior = ctx => HelloWorldService()))

    Seq("S0", "S1").foreach { id =>
      shardRegion ! StartEntity(id)
    }

Есть ли эффективный способ достичь того, чего я хочу? Я не мог найти официальный пост или документацию об этом. Я делаю это неправильно?

1 Ответ

1 голос
/ 25 апреля 2020

У меня была идея! Я мог бы использовать кластер Singleton, задачей которого было бы инициализировать сущности. Это самый эффективный способ, который я придумал, не вдаваясь во внутренние органы и не предлагая запрос на извлечение информации: joy:

...