Akka集群 - 与远程系统的关联失败...原因:[关联失败]

时间:2017-03-09 22:05:24

标签: java akka akka-cluster

我有一个简单的POC,有两个演员:

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
  }
}

这是主要课程:

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));
  }
}

...这些是我的配置文件(分别为application.confcluster.conf):

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

  cluster {
    seed-nodes = [ "akka.tcp://ClusterSystem@127.0.0.1:2551", "akka.tcp://ClusterSystem@127.0.0.1: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 {
}

我在这里想要实现的是从已经建立的流程中“形成一个集群”。所以我曾经有过这些演员(可以是任何流程),现在我正试图让它们在(或作为)集群中工作。我刚刚开始阅读它,所以我对此并不十分熟悉。

我得到的错误是:

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://ClusterSystem@127.0.0.1:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://ClusterSystem@127.0.0.1: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://ClusterSystem@127.0.0.1:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://ClusterSystem@127.0.0.1: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://ClusterSystem@127.0.0.1:2551] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://ClusterSystem@127.0.0.1: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://ClusterSystem@127.0.0.1:2551] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://ClusterSystem@127.0.0.1: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://ClusterSystem@127.0.0.1:2551] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://ClusterSystem@127.0.0.1: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://ClusterSystem@127.0.0.1:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://ClusterSystem@127.0.0.1:2552]] Caused by: [Connection refused: /127.0.0.1:2552]

我正在同一台机器上执行此操作,没有任何东西正在使用这些端口......保证。我在Gradle配置中拥有所有依赖项,但仍然无法让它在没有问题的情况下工作。

1 个答案:

答案 0 :(得分:1)

原来我使用的是不同的端口号; Java代码中为var sel = SerialDevice.GetDeviceSelector("COM7"); var coll = await DeviceInformation.FindAllAsync(sel); 2252,Akka配置中为22512552

纠正这会使错误消失......但是,如果我打印出演员&#39;路径我不会看到它像2551但是akka.tcp://. . .,所以我认为整个群集的东西也不起作用。一个不同的故事,也许是另一个问题。