Проверьте, существует ли актер akka в кластере - PullRequest
0 голосов
/ 04 февраля 2020
public void actorExists() throw ActorNotFound{  
FiniteDuration duration = Duration.create(3, TimeUnit.SECONDS);
        String actorPath = "akka://test/studentid";
        Await.result(actorSystem.actorSelection(actorPath).resolveOne(new Timeout(duration)), duration);
        return true;
}

Этот код может идентифицировать участников в локальном узле, но не из кластера. Если актер не существует в локальном узле, он выдает исключение актер не найден, если существует, он возвращает true.

1 Ответ

1 голос
/ 05 февраля 2020
  public boolean actorExists(String deviceId) throws Exception {
        for (Member member : cluster.state().getMembers()) {
            try {
                String actorPath = member.address() + "/test/studentid";
                FiniteDuration duration = Duration.create(3, TimeUnit.SECONDS);
                Await.result(actorSystem.actorSelection(actorPath).resolveOne(new Timeout(duration)), duration);
            } catch (ActorNotFound exception) {
                continue;
            }
            return true;
        }
        throw new ActorNotFound(null);
    }
...