我编写了两个位于不同机器上的Verticle,它们应该与Json-Messages相互通信。让我们说机器上的Ip是" 192.168.50.45"来自Machine2的ip是" 192.168.50.69"。 Vertx是集群的,而machine1上的verticle应该发送一条消息,machine2上的verticle应该在machine2上接收消息。
现在出现问题:
通常,每台从机器1上的Verticle发送的消息都应该由机器2上的Verticle接收,但我似乎只接收了周期性发送消息的一部分。把它卡在任何地方?或者收据很慢?这可能吗?奇怪的是,如果我在我的本地机器上将两个Verticle一起部署,就没有这样的问题,并且它应该像它应该做的那样。
以下是来自machine1的Verticle的代码:
public class Sender extends AbstractVerticle {
public static void main(String[] args) {
Config config = new Config();
config.getNetworkConfig().getJoin().getMulticastConfig().addTrustedInterface("192.168.3.69");
VertxOptions options = new VertxOptions();
options.setClusterManager(new HazelcastClusterManager(config));
options.setClusterHost("192.168.3.45");
options.setClustered(true);
Vertx.clusteredVertx(options, res -> {
Vertx vertx = res.result();
vertx.deployVerticle(new Sender());
});
}
@Override
public void start() throws Exception {
vertx.setPeriodic(1500, id -> {
vertx.eventBus().send("test", "Buh");
System.out.println("SEND!");
});
}
}
来自machine2的代码:
public class Receiver extends AbstractVerticle {
public static void main(String[] args) {
Config config = new Config();
config.getNetworkConfig().getJoin().getMulticastConfig().addTrustedInterface("192.168.3.45");
VertxOptions options = new VertxOptions();
options.setClusterManager(new HazelcastClusterManager(config));
options.setClustered(true);
options.setClusterHost("192.168.3.69");
Vertx.clusteredVertx(options, res -> {
Vertx vertx = res.result();
vertx.deployVerticle(new Receiver());
});
}
@Override
public void start() throws Exception {
MessageConsumer<String> consumer = vertx.eventBus().consumer("test");
consumer.handler(message -> {
System.out.println(message.body());
});
}
}