Пример Vertx TcpEventBusBridge, удаленный клиент не может читать сообщения шины событий - PullRequest
0 голосов
/ 20 марта 2020

Попытка проверить функцию TcpEventBusBridge в Vertx, предположим сценарий, в котором отправитель периодически публикует сообщение на шине, а удаленный получатель будет принимать сообщения. Ниже приведен источник отправителя:

public class VertxSender extends AbstractVerticle {
    @Override
    public void start() throws Exception {
        TcpEventBusBridge bridge = TcpEventBusBridge.create(vertx,
                new BridgeOptions()
                        .addInboundPermitted(new PermittedOptions().setAddressRegex("sample.*"))
                        .addOutboundPermitted(new PermittedOptions().setAddressRegex("sample.*"))
        );

        MessageProducer<Object> tickPublisher = vertx.eventBus().publisher("sample.clock.ticks");
        vertx.setPeriodic(1000L, id -> {
            tickPublisher.send(new JsonObject().put("tick", id));
            System.out.println("Message " + id + " has been sent!");
        });

        bridge.listen(7000, "localhost", result -> {
            if (result.failed()) {
                throw new RuntimeException(result.cause());
            } else {
                System.out.println("TCP Event Bus bridge running on port 7000");
            }
        });
    }
}

С другой стороны, удаленный клиент Vetrx (и отправитель, и получатель работают на локальном хосте) пытается использовать сообщения отправителя на одном и том же адресе шины:

public class VertxReceiver extends AbstractVerticle {
    @Override
    public void start() throws Exception {
        NetClient client = vertx.createNetClient();
        vertx.eventBus().consumer("sample.clock.ticks", message -> {
            JsonObject body = (JsonObject) message.body();
            System.out.println(body.encodePrettily());
        });
       client.connect(7000, "localhost", conn -> {

        });
    }
}

Но в моем тесте Клиент не получает сообщений! Кто-нибудь знает, как мне изменить источник Receiver, чтобы он работал? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...