use of io.vertx.core.eventbus.Message in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testReplyStringMessageFromClient.
@Test
public void testReplyStringMessageFromClient(TestContext context) {
// Send a request from java and get a response from the client
NetClient client = vertx.createNetClient();
final Async async = context.async();
final String address = "test";
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
JsonObject frame = parse.result();
if ("message".equals(frame.getString("type"))) {
context.assertEquals(true, frame.getBoolean("send"));
context.assertEquals("Vert.x", frame.getJsonObject("body").getString("value"));
FrameHelper.sendFrame("send", frame.getString("replyAddress"), "You got it", socket);
}
});
socket.handler(parser);
FrameHelper.sendFrame("register", address, null, socket);
// There is now way to know that the register actually happened, wait a bit before sending.
vertx.setTimer(500L, timerId -> {
vertx.eventBus().<JsonObject>request(address, new JsonObject().put("value", "Vert.x"), respMessage -> {
context.assertTrue(respMessage.succeeded());
context.assertEquals("You got it", respMessage.result().body());
client.close();
async.complete();
});
});
}));
}
use of io.vertx.core.eventbus.Message in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testFailFromClient.
@Test
public void testFailFromClient(TestContext context) {
// Send a request from java and get a response from the client
NetClient client = vertx.createNetClient();
final Async async = context.async();
final String address = "test";
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
JsonObject frame = parse.result();
if ("message".equals(frame.getString("type"))) {
context.assertEquals(true, frame.getBoolean("send"));
context.assertEquals("Vert.x", frame.getJsonObject("body").getString("value"));
FrameHelper.writeFrame(new JsonObject().put("type", "send").put("address", frame.getString("replyAddress")).put("failureCode", 1234).put("message", "ooops!"), socket);
}
});
socket.handler(parser);
FrameHelper.sendFrame("register", address, null, socket);
// There is now way to know that the register actually happened, wait a bit before sending.
vertx.setTimer(500L, timerId -> {
vertx.eventBus().request(address, new JsonObject().put("value", "Vert.x"), respMessage -> {
context.assertTrue(respMessage.failed());
context.assertEquals("ooops!", respMessage.cause().getMessage());
client.close();
async.complete();
});
});
}));
}
use of io.vertx.core.eventbus.Message in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testNoAddress.
@Test
public void testNoAddress(TestContext context) {
NetClient client = vertx.createNetClient();
final Async async = context.async();
final AtomicBoolean errorOnce = new AtomicBoolean(false);
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
JsonObject frame = parse.result();
if (!errorOnce.compareAndSet(false, true)) {
context.fail("Client gets error message twice!");
} else {
context.assertEquals("err", frame.getString("type"));
context.assertEquals("missing_address", frame.getString("message"));
vertx.setTimer(200, l -> {
client.close();
async.complete();
});
}
});
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
socket.handler(parser);
FrameHelper.sendFrame("send", socket);
}));
}
use of io.vertx.core.eventbus.Message in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testErrorReply.
@Test
public void testErrorReply(TestContext context) {
// Send a request and get a response
NetClient client = vertx.createNetClient();
final Async async = context.async();
vertx.eventBus().consumer("test", (Message<JsonObject> msg) -> {
msg.fail(0, "oops!");
});
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
JsonObject frame = parse.result();
context.assertEquals("err", frame.getString("type"));
context.assertEquals("#backtrack", frame.getString("address"));
client.close();
async.complete();
});
socket.handler(parser);
FrameHelper.sendFrame("send", "test", "#backtrack", new JsonObject().put("value", "vert.x"), socket);
}));
}
use of io.vertx.core.eventbus.Message in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeEchoServer method main.
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
EventBus eb = vertx.eventBus();
eb.consumer("hello", (Message<JsonObject> msg) -> {
msg.reply(new JsonObject().put("value", "Hello " + msg.body().getString("value")));
});
eb.consumer("echo", (Message<JsonObject> msg) -> msg.reply(msg.body()));
eb.consumer("echo2", (Message<JsonObject> msg) -> {
if ("send".equals(msg.body().getString("response_type"))) {
eb.send("echo2_response", msg.body());
} else {
eb.publish("echo2_response", msg.body());
}
});
TcpEventBusBridge bridge = TcpEventBusBridge.create(vertx, new BridgeOptions().addInboundPermitted(new PermittedOptions().setAddress("hello")).addInboundPermitted(new PermittedOptions().setAddress("echo")).addOutboundPermitted(new PermittedOptions().setAddress("echo")).addInboundPermitted(new PermittedOptions().setAddress("echo2")).addOutboundPermitted(new PermittedOptions().setAddress("echo2_response")));
bridge.listen(7000, res -> System.out.println("Ready"));
}
Aggregations