Невозможно обмениваться данными с помощью шины событий для версий, запущенных на разных машинах.

Мы пытались установить связь между статьями по шине событий. Мы попробовали простейший пример общения в пинг-понге -

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.


person Abhishek Kedia    schedule 14.12.2015    source источник


Ответы (1)


Вы пробовали установить setClustered (true) на VertxOptions? Я тестировал этот пример кода, и у меня он отлично работает:

public static void main(String[] args) {
    VertxOptions op = new VertxOptions();
    op.setClustered(true);
    Vertx.clusteredVertx(op, e -> {
        if (e.succeeded()) {
            HelloWorldVerticle hwv = new HelloWorldVerticle();
            e.result().deployVerticle(hwv);
        } else {
            e.cause().printStackTrace();
        }
    });
}
person michali    schedule 15.12.2015