Мы пытались установить связь между вертикалями с использованием шины событий. Мы попробовали простейший пример связи пинг-понга -Невозможно связываться с использованием шины событий для вершин, запущенных на разных машинах
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");
}
});
});
}
}
Аналогичным образом мы написали письмо получателя. See the code.
Связь выполнена успешно, если и отправитель, и приемник работают на одной машине. Но когда они запускаются, разные машины обрываются. Кроме того, это не проблема с менеджером кластеров Hazelcast (который мы использовали), потому что hazelcast правильно обнаруживает другого однорангового узла на обеих машинах (это видно из консольных журналов каретки).
Members [2] {
Member [192.168.43.12]:5701
Member [192.168.43.84]:5701 this
}
Также брандмауэр не был включен на обеих машинах, и мы смогли установить связь между теми же машинами, используя только hazelcast (без использования VertX), и она работала отлично (например this). Так что, вероятно, проблема связана с vert-x.