void registerHandler(EventBus eventBus) { Handler<Message<Buffer>> binaryHandler = msg -> writeBinaryFrameInternal(msg.body()); Handler<Message<String>> textHandler = msg -> writeTextFrameInternal(msg.body()); binaryHandlerRegistration = eventBus.<Buffer>localConsumer(binaryHandlerID).handler(binaryHandler); textHandlerRegistration = eventBus.<String>localConsumer(textHandlerID).handler(textHandler); }
synchronized void registerEventBusHandler() { Handler<Message<Buffer>> writeHandler = msg -> write(msg.body()); registration = vertx.eventBus().<Buffer>localConsumer(writeHandlerID).handler(writeHandler); }
@Override public void start(Future<Void> done) throws Exception { vertx.eventBus().localConsumer("message", d -> { msg.incrementAndGet(); try { Thread.sleep(10); if (metrics.numberOfWaitingTasks() > 0) { hadWaitingQueue.set(true); } if (metrics.numberOfIdleThreads() > 0) { hadIdle.set(true); } if (metrics.numberOfRunningTasks() > 0) { hadRunning.set(true); } if (counter.incrementAndGet() == count) { testComplete(); } } catch (InterruptedException e) { Thread.currentThread().isInterrupted(); } } ); done.complete(); } };
@Test public void testRegisterLocal2() { String str = TestUtils.randomUnicodeString(100); eb.localConsumer(ADDRESS1, (Message<String> msg) -> { assertEquals(str, msg.body()); testComplete(); }).completionHandler(ar -> { assertTrue(ar.succeeded()); eb.send(ADDRESS1, str); }); await(); }
@Test public void testRegisterLocal1() { String str = TestUtils.randomUnicodeString(100); eb.<String>localConsumer(ADDRESS1).handler((Message<String> msg) -> { assertEquals(str, msg.body()); testComplete(); }).completionHandler(ar -> { assertTrue(ar.succeeded()); eb.send(ADDRESS1, str); }); await(); }
private void testDeliveryOptionsLocalOnly(boolean send) { waitFor(30); startNodes(2); AtomicLong localConsumer0 = new AtomicLong(); vertices[0].eventBus().localConsumer(ADDRESS1).handler(msg -> { localConsumer0.incrementAndGet(); complete(); }); AtomicLong consumer1 = new AtomicLong(); vertices[1].eventBus().consumer(ADDRESS1).handler(msg -> { consumer1.incrementAndGet(); }).completionHandler(onSuccess(v -> { for (int i = 0; i < 30; i++) { if (send) { vertices[0].eventBus().send(ADDRESS1, "msg", new DeliveryOptions().setLocalOnly(true)); } else { vertices[0].eventBus().publish(ADDRESS1, "msg", new DeliveryOptions().setLocalOnly(true)); } } })); await(); assertEquals(30, localConsumer0.get()); assertEquals(0, consumer1.get()); }
@Test public void testLocalHandlerNotReceive() throws Exception { startNodes(2); vertices[1].eventBus().localConsumer(ADDRESS1).handler(msg -> { fail("Should not receive message"); }); vertices[0].eventBus().send(ADDRESS1, "foo"); vertices[0].setTimer(1000, id -> testComplete()); await(); }
@Test public void testArgumentValidation() throws Exception { assertNullPointerException(() -> eb.send(null, "")); assertNullPointerException(() -> eb.send(null, "", handler -> {})); assertNullPointerException(() -> eb.send(null, "", new DeliveryOptions())); assertNullPointerException(() -> eb.send("", "", (DeliveryOptions) null)); assertNullPointerException(() -> eb.send(null, "", new DeliveryOptions(), handler -> {})); assertNullPointerException(() -> eb.send("", "", null, handler -> {})); assertNullPointerException(() -> eb.publish(null, "")); assertNullPointerException(() -> eb.publish(null, "", new DeliveryOptions())); assertNullPointerException(() -> eb.publish("", "", null)); assertNullPointerException(() -> eb.consumer(null)); assertNullPointerException(() -> eb.consumer(null, msg -> {})); assertNullPointerException(() -> eb.consumer(ADDRESS1, null)); assertNullPointerException(() -> eb.localConsumer(null)); assertNullPointerException(() -> eb.localConsumer(null, msg -> {})); assertNullPointerException(() -> eb.localConsumer(ADDRESS1, null)); assertNullPointerException(() -> eb.sender(null)); assertNullPointerException(() -> eb.sender(null, new DeliveryOptions())); assertNullPointerException(() -> eb.publisher("", null)); assertNullPointerException(() -> eb.publisher(null, new DeliveryOptions())); assertNullPointerException(() -> eb.registerCodec(null)); assertNullPointerException(() -> eb.unregisterCodec(null)); assertNullPointerException(() -> eb.registerDefaultCodec(null, new MyPOJOEncoder1())); assertNullPointerException(() -> eb.registerDefaultCodec(Object.class, null)); assertNullPointerException(() -> eb.unregisterDefaultCodec(null)); }
void registerHandler(EventBus eventBus) { Handler<Message<Buffer>> binaryHandler = msg -> writeBinaryFrameInternal(msg.body()); Handler<Message<String>> textHandler = msg -> writeTextFrameInternal(msg.body()); binaryHandlerRegistration = eventBus.<Buffer>localConsumer(binaryHandlerID).handler(binaryHandler); textHandlerRegistration = eventBus.<String>localConsumer(textHandlerID).handler(textHandler); }
synchronized void registerEventBusHandler() { Handler<Message<Buffer>> writeHandler = msg -> write(msg.body()); registration = vertx.eventBus().<Buffer>localConsumer(writeHandlerID).handler(writeHandler); }
@Override public void start(Future<Void> done) throws Exception { vertx.eventBus().localConsumer("message", d -> { msg.incrementAndGet(); try { Thread.sleep(10); if (metrics.numberOfWaitingTasks() > 0) { hadWaitingQueue.set(true); } if (metrics.numberOfIdleThreads() > 0) { hadIdle.set(true); } if (metrics.numberOfRunningTasks() > 0) { hadRunning.set(true); } if (counter.incrementAndGet() == count) { testComplete(); } } catch (InterruptedException e) { Thread.currentThread().isInterrupted(); } } ); done.complete(); } };
@Test public void testRegisterLocal2() { String str = TestUtils.randomUnicodeString(100); eb.localConsumer(ADDRESS1, (Message<String> msg) -> { assertEquals(str, msg.body()); testComplete(); }).completionHandler(ar -> { assertTrue(ar.succeeded()); eb.send(ADDRESS1, str); }); await(); }
@Test public void testRegisterLocal1() { String str = TestUtils.randomUnicodeString(100); eb.<String>localConsumer(ADDRESS1).handler((Message<String> msg) -> { assertEquals(str, msg.body()); testComplete(); }).completionHandler(ar -> { assertTrue(ar.succeeded()); eb.send(ADDRESS1, str); }); await(); }
private void testDeliveryOptionsLocalOnly(boolean send) { waitFor(30); startNodes(2); AtomicLong localConsumer0 = new AtomicLong(); vertices[0].eventBus().localConsumer(ADDRESS1).handler(msg -> { localConsumer0.incrementAndGet(); complete(); }); AtomicLong consumer1 = new AtomicLong(); vertices[1].eventBus().consumer(ADDRESS1).handler(msg -> { consumer1.incrementAndGet(); }).completionHandler(onSuccess(v -> { for (int i = 0; i < 30; i++) { if (send) { vertices[0].eventBus().send(ADDRESS1, "msg", new DeliveryOptions().setLocalOnly(true)); } else { vertices[0].eventBus().publish(ADDRESS1, "msg", new DeliveryOptions().setLocalOnly(true)); } } })); await(); assertEquals(30, localConsumer0.get()); assertEquals(0, consumer1.get()); }
@Test public void testLocalHandlerNotReceive() throws Exception { startNodes(2); vertices[1].eventBus().localConsumer(ADDRESS1).handler(msg -> { fail("Should not receive message"); }); vertices[0].eventBus().send(ADDRESS1, "foo"); vertices[0].setTimer(1000, id -> testComplete()); await(); }
/** * Like {@link io.vertx.rxjava.core.eventbus.EventBus#consumer} but the address won't be propagated across the cluster. * @param address the address to register it at * @return the event bus message consumer */ public <T> io.vertx.rxjava.core.eventbus.MessageConsumer<T> localConsumer(String address) { io.vertx.rxjava.core.eventbus.MessageConsumer<T> ret = io.vertx.rxjava.core.eventbus.MessageConsumer.newInstance(delegate.localConsumer(address), io.vertx.lang.rx.TypeArg.unknown()); return ret; }
/** * Like {@link io.vertx.rxjava.core.eventbus.EventBus#consumer} but the address won't be propagated across the cluster. * @param address the address to register it at * @return the event bus message consumer */ public <T> io.vertx.rxjava.core.eventbus.MessageConsumer<T> localConsumer(String address) { io.vertx.rxjava.core.eventbus.MessageConsumer<T> ret = io.vertx.rxjava.core.eventbus.MessageConsumer.newInstance(delegate.localConsumer(address), io.vertx.lang.rx.TypeArg.unknown()); return ret; }
@Test public void testArgumentValidation() throws Exception { assertNullPointerException(() -> eb.send(null, "")); assertNullPointerException(() -> eb.send(null, "", handler -> {})); assertNullPointerException(() -> eb.send(null, "", new DeliveryOptions())); assertNullPointerException(() -> eb.send("", "", (DeliveryOptions) null)); assertNullPointerException(() -> eb.send(null, "", new DeliveryOptions(), handler -> {})); assertNullPointerException(() -> eb.send("", "", null, handler -> {})); assertNullPointerException(() -> eb.publish(null, "")); assertNullPointerException(() -> eb.publish(null, "", new DeliveryOptions())); assertNullPointerException(() -> eb.publish("", "", null)); assertNullPointerException(() -> eb.consumer(null)); assertNullPointerException(() -> eb.consumer(null, msg -> {})); assertNullPointerException(() -> eb.consumer(ADDRESS1, null)); assertNullPointerException(() -> eb.localConsumer(null)); assertNullPointerException(() -> eb.localConsumer(null, msg -> {})); assertNullPointerException(() -> eb.localConsumer(ADDRESS1, null)); assertNullPointerException(() -> eb.sender(null)); assertNullPointerException(() -> eb.sender(null, new DeliveryOptions())); assertNullPointerException(() -> eb.publisher("", null)); assertNullPointerException(() -> eb.publisher(null, new DeliveryOptions())); assertNullPointerException(() -> eb.registerCodec(null)); assertNullPointerException(() -> eb.unregisterCodec(null)); assertNullPointerException(() -> eb.registerDefaultCodec(null, new MyPOJOEncoder1())); assertNullPointerException(() -> eb.registerDefaultCodec(Object.class, null)); assertNullPointerException(() -> eb.unregisterDefaultCodec(null)); }
private void testDeploy(String serviceName, String verticleClassName) throws Exception { CountDownLatch latch = new CountDownLatch(2); vertx.eventBus().localConsumer("moduleStarted").handler(message -> { assertEquals(verticleClassName, message.body()); latch.countDown(); }); vertx.deployVerticle("service:" + serviceName, res -> { assertTrue(res.succeeded()); latch.countDown(); }); assertWaitUntil(() -> vertx.deploymentIDs().size() == 1); awaitLatch(latch); }
@Test public void testUseMainVerticleFromManifest() throws Exception { File testRepo = createMyModuleMainVerticleRepository("testUseMainVerticleFromManifest"); configureRepos(testRepo, null); vertx.eventBus().localConsumer("mymodule").handler(message -> { assertEquals("whatever", message.body()); testComplete(); }); vertx.deployVerticle("maven:my:module:1.0"); await(); }