イベント バスを使用してバーティクル間の通信を確立しようとしていました。最も単純なピンポン通信の例を試してみました -
public class Sender extends AbstractVerticle {
public static void main(String[] args) {
Vertx.clusteredVertx(new VertxOptions(),res->{
res.result().deployVerticle(new Sender());
});
}
@Override
public void start() throws Exception {
EventBus eb = vertx.eventBus();
vertx.setPeriodic(1000, v -> {
eb.send("ping-address", "ping!", reply -> {
if (reply.succeeded()) {
System.out.println("Received reply: " + reply.result().body());
} else {
System.out.println("No reply");
}
});
});
}
}
同様に、レシーバーを書きました。コードを参照してください。
送信側と受信側の両方が同じマシンで実行されている場合、通信は成功します。しかし、それらが異なるマシンで実行されている場合、通信は失敗します。また、hazelcast は両方のマシンで他のピアを正しく検出するため (これは、hazelcast のコンソール ログから明らかです)、Hazelcast クラスター マネージャー (使用したもの) の問題ではないようです。
Members [2] {
Member [192.168.43.12]:5701
Member [192.168.43.84]:5701 this
}
また、両方のマシンでファイアウォールが有効になっておらず、hazelcast のみを使用して (vertx を使用せずに) 同じマシン間の通信を確立でき、完全に機能しました (たとえば、この)。したがって、問題はおそらく vert-x にあります。