@Override public void start() throws Exception { EventBus eb = vertx.eventBus(); eb.consumer("news-feed"). toObservable(). subscribe(message -> System.out.println("Received news: " + message.body())); System.out.println("Ready!"); } }
@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()); }); }); } }
private <T> void register(String address, Function<JsonObject, Single<T>> mapper) { vertx.eventBus().<JsonObject>consumer(address) .toObservable() .subscribe(msg -> { mapper.apply(msg.body()).subscribe(msg::reply, err -> { log.error("Could not perform query", err); msg.fail(throwableToCode(err), throwableToMessage(err, "")); }); }); }
/** * Handle a pause message * @param msg the message */ private void onPause(Message<Boolean> msg) { Boolean paused = msg.body(); if (paused == null || !paused) { if (this.paused) { log.info("Resuming import"); this.paused = false; for (AsyncFile f : filesBeingImported) { f.resume(); } } } else { if (!this.paused) { log.info("Pausing import"); this.paused = true; for (AsyncFile f : filesBeingImported) { f.pause(); } } } }
private void registerConsumer(final String dbname) { LOG.debug("Registering handler for {} database", dbname); if(LOG.isTraceEnabled()){ vertx.eventBus().<JsonObject>consumer("/store/" + dbname, msg -> { LOG.trace("received datapoint for db '{}': {}", dbname, msg.body()); }); } vertx.eventBus().<JsonObject>consumer("/store/" + dbname).bodyStream() .toObservable() .buffer(config().getInteger("maxRowLimit", 1000)) .map(this::joinDataPoints) .subscribe(result -> sendDatapoint(dbname, result)); vertx.eventBus().<JsonObject>consumer("/influx/write?db=" + dbname).bodyStream() .toObservable() .buffer(config().getInteger("maxRowLimit", 1000)) .map(this::joinDataPoints) .subscribe(result -> sendDatapoint(dbname, result)); }
JsonObject body = msg.body(); String filename = body.getString("filename"); String filepath = incoming + "/" + filename;
JsonObject body = msg.body(); String correlationId = body.getString("correlationId"); if (currentTask == null) {
JsonArray hits = new JsonArray(); String givenScrollId = msg.body().getString("scrollId");
.flatMap(msg -> { JsonObject body = msg.body(); String path = body.getString("path"); if (path == null) {
/** * Register consumer for delete messages */ private void registerDelete() { vertx.eventBus().<JsonObject>consumer(AddressConstants.INDEXER_DELETE) .toObservable() .subscribe(msg -> { onDelete(msg.body()).subscribe(() -> { msg.reply(null); }, err -> { log.error("Could not delete document", err); msg.fail(throwableToCode(err), throwableToMessage(err, "")); }); }); }
/** * Register consumer for queries */ private void registerQuery() { vertx.eventBus().<JsonObject>consumer(AddressConstants.INDEXER_QUERY) .toObservable() .subscribe(msg -> { onQuery(msg.body()).subscribe(reply -> { msg.reply(reply); }, err -> { log.error("Could not perform query", err); msg.fail(throwableToCode(err), throwableToMessage(err, "")); }); }); }
@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); }
context.assertEquals(data, h.body()); aC.complete(); }); vertx.eventBus().consumer("a", h -> { context.assertEquals(data, h.body()); bC.complete(); }); vertx.eventBus().consumer("b", h -> { context.assertEquals(data, h.body()); cC.complete(); }); vertx.eventBus().consumer("b", h -> { context.assertEquals(data, h.body()); dC.complete(); });
/** * Test if a message can be sent and if a consumer receives the message. * This method does not test if the message can be sent to only one * consumer (instead of all, see {@link #broadcast(TestContext)}), * because it's not possible to check if a consumer will not receive a * message before the asynchronous test ends. * @param context the test context */ @Test public void send(TestContext context) { Vertx vertx = new Vertx(rule.vertx()); Async a = context.async(); String data = "special data"; vertx.eventBus().consumer("a", h -> { context.assertEquals(data, h.body()); a.complete(); }); ServiceDiscovery discovery = ServiceDiscovery.create(vertx); Service.publishOnce("A", "a", discovery, vertx) .andThen(Service.discover("A", discovery, vertx)) .doOnTerminate(discovery::close) .subscribe(service -> { service.broadcast(data); service.send(data); }, context::fail); }