私はvertx3を使用しています。バージョン 3.0.0 - 3.1.0 - 3.2.0-SNAPSHOT で試してみましたが、それらすべてで発生しています。
問題を単純化するために、2 つの単純な Verticles を作成しました。1 つ目はメッセージのコンシューマーとして機能し、2 つ目はイベント バスを介してメッセージを送信します。
問題は、eventBus が機能していないように見え、クラスターで実行するとタイムアウトになることです。
2 番目のノードがクラスターに参加するなどの理由がわかりません。
ここにコードを追加します。
public class FirstVerticle extends AbstractVerticle {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public void start() {
getVertx().eventBus().consumer("test-service", message -> {
log.info(String.format("test-Service receive: %s", message));
message.reply("ok");
}).completionHandler(event -> {
if(event.succeeded()) log.info("complete handler");
else log.info("failed");
});
log.info("Done initializing");
}
}
public class SecondVerticle extends AbstractVerticle {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public void start() {
log.info("Done initializing test");
getVertx().setPeriodic(2000L, id -> {
log.info("sending message test");
getVertx().eventBus().send("test-service", "hi", response -> {
if(response.succeeded()) log.info("success");
else log.info("error?");
});
});
}
}
私は垂直を実行しています
java -jar counter-service-1.0-SNAPSHOT-fat.jar -cluster -cluster-host 192.168.112.9
そして2番目のもの:
java -jar test-service-1.0-SNAPSHOT-fat.jar -cluster -cluster-host 192.168.112.10
FirstVerticle に次の cluster.xml があります
<network>
<port auto-increment="true" port-count="10000">5701</port>
<outbound-ports>
<ports>0</ports>
</outbound-ports>
<join>
<multicast enabled="false">
<multicast-group>224.2.2.3</multicast-group>
<multicast-port>54327</multicast-port>
</multicast>
<tcp-ip enabled="true" connection-timeout-seconds="10">
<interface>192.168.112.9</interface>
<interface>192.168.112.10</interface>
</tcp-ip>
</join>
<interfaces enabled="true">
<interface>192.168.112.*</interface>
</interfaces>
</network>
および SecondVerticle のこの cluster.xml
<network>
<port auto-increment="true" port-count="10000">5701</port>
<outbound-ports>
<ports>0</ports>
</outbound-ports>
<join>
<multicast enabled="false">
<multicast-group>224.2.2.3</multicast-group>
<multicast-port>54327</multicast-port>
</multicast>
<tcp-ip enabled="true" connection-timeout-seconds="10" >
<interface>192.168.112.9</interface>
<interface>192.168.112.10</interface>
</tcp-ip>
</join>
<interfaces enabled="true">
<interface>192.168.112.*</interface>
</interfaces>
</network>
最初のバーチクルを実行し、2番目のバーチクルを実行した後、
Members [2] {
Member [192.168.112.9]:5701 this
Member [192.168.112.10]:5701
}
そして2番目のノードから
Members [2] {
Member [192.168.112.9]:5701
Member [192.168.112.10]:5701 this
}
しかし、私は2番目のノードからしか持っていません
sending message test
そして10秒後
Message reply handler timed out as no reply was received - it will be removed
error?
これは が別のマシンで実行されている場合に発生しますが、 が同じマシンで実行されている場合はすべて正常に動作しています。それらはCentOSで実行されており、ファイアウォールが無効になっており、内部IP間の通信は問題ありません....何かアイデアはありますか?
ありがとう、