Мы пытались установить связь между статьями по шине событий. Мы попробовали простейший пример общения в пинг-понге -
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), и он работал отлично (например, this). Так что, вероятно, проблема в vert-x.