Vertx:在eventbus中没有收到很多已发送的消息 - 为什么?

时间:2016-09-06 20:29:44

标签: java sendmessage vert.x event-bus

我编写了两个位于不同机器上的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());
        });

    }

}

0 个答案:

没有答案