我有一个简单的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.conf
和cluster.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配置中拥有所有依赖项,但仍然无法让它在没有问题的情况下工作。
答案 0 :(得分:1)
原来我使用的是不同的端口号; Java代码中为var sel = SerialDevice.GetDeviceSelector("COM7");
var coll = await DeviceInformation.FindAllAsync(sel);
和2252
,Akka配置中为2251
和2552
。
纠正这会使错误消失......但是,如果我打印出演员&#39;路径我不会看到它像2551
但是akka.tcp://. . .
,所以我认为整个群集的东西也不起作用。一个不同的故事,也许是另一个问题。