Попытка проверить функцию 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, чтобы он работал? Спасибо