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.
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
Ê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 –
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. –