@Override public void start() throws Exception { EventBus eb = vertx.eventBus(); eb.consumer(ADDRESS) .toObservable() .subscribe(message -> { System.out.println("Received " + message.body()); message.reply("PONG"); }); // Send a message every second vertx.setPeriodic(1000, v -> { eb.rxSend(ADDRESS, "PING") .subscribe(reply -> { System.out.println("Received reply " + reply.body()); }); }); } }
@Test public void testConcatReplies() { EventBus eb = vertx.eventBus(); eb.<String>consumer("the-address", msg -> { msg.reply(msg.body()); }); Single<Message<String>> obs1 = eb.rxSend("the-address", "msg1"); Single<Message<String>> obs2 = eb.rxSend("the-address", "msg2"); eb.send("the-address", "done", reply -> { Observable<Message<String>> all = Single.concat(obs1, obs2); LinkedList<String> values = new LinkedList<String>(); all.subscribe(next -> { values.add(next.body()); }, err -> { fail(); }, () -> { assertEquals(Arrays.asList("msg1", "msg2"), values); testComplete(); }); }); await(); }
@Test @DisplayName("Check the deployment and interaction of a Rx1 verticle") void check_deployment_and_message_send(Vertx vertx, VertxTestContext testContext) { RxHelper .deployVerticle(vertx, new RxVerticle()) .toSingle() .flatMap(id -> vertx.eventBus().rxSend("check", "Ok?")) .subscribe( message -> testContext.verify(() -> { assertThat(message.body()).isEqualTo("Check!"); testContext.completeNow(); }), testContext::failNow); }