2017-03-09 1 views
1

J'ai simple POC avec deux acteurs:groupe AKKA - Association avec le système à distance a échoué ... La raison: [Association a échoué]

public final class Task1Actor extends AbstractLoggingActor { 
    public Task1Actor() { 
    final UnitPFBuilder<Object> builder = ReceiveBuilder.create() 
     .matchAny(message -> { 
      log().warning("Received unknown message: {}", message); 
      unhandled(message); 
     }); 
    receive(builder.build()); 
    } 

    @Override 
    public void preStart() throws Exception { 
    IntStream.range(0, 5).forEach(i -> { 
     final ActorRef actor = context().actorOf(Props.create(Task2Actor.class)); 
     actor.tell(RandomStringUtils.randomAlphabetic(10), self()); 
    }); 
    } 
} 

public final class Task2Actor extends AbstractLoggingActor { 
    public Task2Actor() { 
    final UnitPFBuilder<Object> builder = ReceiveBuilder.create() 
     .match(String.class, this::process) 
     .matchAny(message -> { 
      log().warning("Received unknown message: {}", message); 
      unhandled(message); 
     }); 
    receive(builder.build()); 
    } 

    private void process(final String message) { 
    log().debug("Processing message: {}", message); 
    // Do something useful here in the (not-so far) future 
    } 
} 

Ceci est la classe principale:

final class ClusterSample { 
    public static void main(final String... args) throws Exception { 
    ClusterSample.start(2251); 
    ClusterSample.start(2252); 
    ClusterSample.start(0); 
    } 

    private static void start(final int port) { 
    final Config config = ConfigFactory.parseString(String.format("akka.remote.netty.tcp.port = %s", port)) 
     //.withFallback(ConfigFactory.parseString(String.format("akka.cluster.roles = [%s]", role))) 
     .withFallback(ConfigFactory.load("cluster")); 
    ActorSystem system = ActorSystem.create("ClusterSystem", config); 
    system.actorOf(Props.create(Task1Actor.class)); 
    } 
} 

... et ce sont mes fichiers de configuration (application.conf et cluster.conf respectivement):

akka { 
    actor { 
    default-dispatcher { throughput = 5 } 
    provider = cluster 
    } 

    cluster { 
    seed-nodes = [ "akka.tcp://[email protected]:2551", "akka.tcp://[email protected]:2552" ] 
    # roles = ["role"] 
    } 

    remote { 
    log-remote-lifecycle-events = off 
    netty.tcp { 
     hostname = 127.0.0.1 
     port = 0 
    } 
    } 

    loggers = [ "akka.event.slf4j.Slf4jLogger" ] 

    logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" 

    loglevel = DEBUG 
} 

include "application" 

akka.cluster.min-nr-of-members = 2 

akka.cluster.role { 
    watson.min-nr-of-members = 2 
} 

akka.actor.deployment { 
} 

Ce que je suis en train de faire ici est de « former un groupe » à partir d'un flux déjà établi. Donc j'avais l'habitude d'avoir ces acteurs (peut être n'importe quel flux) et maintenant j'essaie de les faire fonctionner dans (ou comme) un cluster. Je viens de commencer à lire à ce sujet, donc je ne suis pas très familier avec ça.

Les erreurs que je reçois sont:

03-09-2017 16:52:43.749 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-20] - Processing message: GCGboeqRKJ 
03-09-2017 16:52:43.749 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-21] - Processing message: ykhePhziFT 
03-09-2017 16:52:43.749 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-2] - Processing message: SFvnRAlGgg 
03-09-2017 16:52:43.753 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-21] - Processing message: bMgBtCzWCI 
03-09-2017 16:52:43.753 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-20] - Processing message: ifoOOmqbbv 
03-09-2017 16:52:43.753 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-2] - Processing message: ZekwWXmmSQ 
03-09-2017 16:52:43.754 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-21] - Processing message: MqXGoSQSzU 
03-09-2017 16:52:43.754 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-20] - Processing message: NrdVYAFgrR 
03-09-2017 16:52:43.754 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-2] - Processing message: GsjyIsxetC 
03-09-2017 16:52:43.754 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-21] - Processing message: LpVNmbriXO 
03-09-2017 16:52:43.754 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-20] - Processing message: HCFzOjJwnO 
03-09-2017 16:52:43.755 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-2] - Processing message: iqflQMSeJF 
03-09-2017 16:52:43.755 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-21] - Processing message: HlyMdMJfUs 
03-09-2017 16:52:43.755 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-20] - Processing message: jlwxzLmRsF 
03-09-2017 16:52:43.755 |- DEBUG in Task2Actor:88 [ClusterSystem-akka.actor.default-dispatcher-2] - Processing message: XPSmMYekCs 
03-09-2017 16:52:43.794 |- WARN in ReliableDeliverySupervisor:78 [ClusterSystem-akka.actor.default-dispatcher-20] - Association with remote system [akka.tcp://[email protected]:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://[email protected]:2552]] Caused by: [Connection refused: /127.0.0.1:2552] 
03-09-2017 16:52:43.794 |- WARN in ReliableDeliverySupervisor:78 [ClusterSystem-akka.actor.default-dispatcher-21] - Association with remote system [akka.tcp://[email protected]:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://[email protected]:2552]] Caused by: [Connection refused: /127.0.0.1:2552] 
03-09-2017 16:52:43.794 |- WARN in ReliableDeliverySupervisor:78 [ClusterSystem-akka.actor.default-dispatcher-20] - Association with remote system [akka.tcp://[email protected]:2551] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://[email protected]:2551]] Caused by: [Connection refused: /127.0.0.1:2551] 
03-09-2017 16:52:43.794 |- WARN in ReliableDeliverySupervisor:78 [ClusterSystem-akka.actor.default-dispatcher-2] - Association with remote system [akka.tcp://[email protected]:2551] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://[email protected]:2551]] Caused by: [Connection refused: /127.0.0.1:2551] 
03-09-2017 16:52:43.795 |- WARN in ReliableDeliverySupervisor:78 [ClusterSystem-akka.actor.default-dispatcher-21] - Association with remote system [akka.tcp://[email protected]:2551] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://[email protected]:2551]] Caused by: [Connection refused: /127.0.0.1:2551] 
03-09-2017 16:52:43.796 |- WARN in ReliableDeliverySupervisor:78 [ClusterSystem-akka.actor.default-dispatcher-2] - Association with remote system [akka.tcp://[email protected]:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://[email protected]:2552]] Caused by: [Connection refused: /127.0.0.1:2552] 

Je l'exécution de ce sur la même machine et rien est d'utiliser ces ports ... garanti. J'ai toutes les dépendances dans ma configuration Gradle, mais je n'arrive toujours pas à le faire fonctionner sans problème.

+0

Accès au pare-feu bloquant peut-être? L'erreur "connection refused" provient de l'API Java IO sous-jacente: s et n'est pas spécifique à Akka mais exactement ce qu'elle dit, elle essaie de faire une connexion TCP mais cela a été refusé par l'autre extrémité. La configuration et la logique de démarrage semblent correctes. – johanandren

+0

Êtes-vous sur unix? 127.0.0.1 et localhost ne sont pas les mêmes choses ici parfois. Je ne me souviens pas des détails mais je me souviens avoir dû passer de l'un à l'autre pour le faire fonctionner sur unix –

+0

Eh bien, il s'avère que le numéro de port était similaire mais pas le même; juste une faute de frappe. Si j'utilise le même numéro de port dans le fichier de configuration Akka et dans 'ClusterSample.java', je ne reçois pas les erreurs, mais quand même j'imprime le chemin des acteurs, ce n'est pas' akka.tcp: //. . .' mais 'akka: //. . . », donc je suppose que tout le cluster ne fonctionne pas non plus. –

Répondre

0

Il s'avère que j'utilisais des numéros de port différents; 2252 et 2251 dans le code Java et 2552 et 2551 dans la configuration Akka.

Corriger cela va faire disparaître les erreurs ... mais encore, si j'imprime le chemin des acteurs je ne le vois pas comme akka.tcp://. . . mais akka:// . . ., donc je suppose que tout le cluster ne fonctionne pas non plus. Une histoire différente et peut-être une autre question.