2
我們試圖使用事件總線在垂直版本之間建立通信。我們嘗試了最簡單的乒乓通信示例 -使用事件總線在不同機器上運行的垂直版本無法通信
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集羣管理器(我們使用)的問題,因爲榛樹在兩臺機器上正確發現其他同行(這從榛樹控制檯日誌中可以明顯看出)。
Members [2] {
Member [192.168.43.12]:5701
Member [192.168.43.84]:5701 this
}
而且防火牆還沒有在兩臺機器上啓用,並且我們能夠建立(不使用vertx)只使用hazelcast同樣的機器之間的通信,它完美地工作(例如this)。 所以可能問題是vert-x。