/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class CurrentContextFromMain { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); System.out.println("Current context is " + Vertx.currentContext()); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class ConfigureThreadPool { public static void eventLoop() { Vertx vertx = Vertx.vertx(new VertxOptions().setEventLoopPoolSize(10)); } public static void worker() { Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(10)); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class GettingOrCreatingContextFromMain { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); Context context = vertx.getOrCreateContext(); System.out.println("Current context is " + Vertx.currentContext()); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class CreatingAnEventLoopFromHttpServer { public static void main(String[] args) { // Does not run in a context Vertx vertx = Vertx.vertx(); HttpServer server = vertx.createHttpServer(); server.listen(result -> { // This runs in a context created just for the purpose of this http server }); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class ServerStartingFromWorker { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.deployVerticle(new AbstractVerticle() { public void start() throws Exception { vertx.createHttpServer(); } }, new DeploymentOptions().setWorker(true)); } }
/** @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class CreatingDifferentEventLoopsFromHttpServers { private static Handler<HttpServerRequest> requestHandler = req -> {}; public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.createHttpServer().requestHandler(requestHandler).listen(result -> { // This executes in a context System.out.println("Current thread is " + Thread.currentThread()); }); vertx.createHttpServer().requestHandler(requestHandler).listen(result -> { // This executes in a different context System.out.println("Current thread is " + Thread.currentThread()); }); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class ExecuteBlockingThrowingFailure { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.runOnContext(v -> { Handler<Future<String>> blockingCodeHandler = future -> { throw new RuntimeException(); }; Handler<AsyncResult<String>> resultHandler = result -> { if (result.succeeded()) { System.out.println("Got result"); } else { System.out.println("Blocking code failed"); result.cause().printStackTrace(System.out); } }; vertx.executeBlocking(blockingCodeHandler, resultHandler); }); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class TheWorker extends AbstractVerticle { static final AtomicInteger serial = new AtomicInteger(); final int id = serial.incrementAndGet(); @Override public void start() throws Exception { vertx.eventBus().consumer("the-address", msg -> { try { Thread.sleep(10); msg.reply("Executed by worker " + id + " with " + Thread.currentThread()); } catch (InterruptedException e) { msg.fail(0, "Interrupted"); } }); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class TimerOnWorkerThreadNotGuaranted { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.deployVerticle(new AbstractVerticle() { @Override public void start() throws Exception { long now = System.currentTimeMillis(); System.out.println("Starting timer on " + Thread.currentThread()); vertx.setTimer(1000, id -> { System.out.println("Timer fired " + Thread.currentThread() + " after " + (System.currentTimeMillis() - now) + " ms"); }); Thread.sleep(2000); } }, new DeploymentOptions().setWorker(true)); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class WorkerInstancesReplying { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.deployVerticle( TheWorker.class.getName(), new DeploymentOptions().setWorker(true).setInstances(3) ); for (int i = 0;i < 10;i++) { vertx.eventBus().send("the-address", "the-message", reply -> { System.out.println(reply.result().body()); }); } } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class ExecuteBlockingUnordered { public static void main(String[] args) throws Exception { new ExecuteBlockingUnordered().execute(Vertx.vertx()); } Handler<Future<String>> blockingCodeHandler1 = future -> {}; Handler<Future<String>> blockingCodeHandler2 = future -> {}; Handler<Future<String>> blockingCodeHandler3 = future -> {}; public void execute(Vertx vertx) { vertx.runOnContext(v -> { // The blocks are executed on any available worker thread vertx.executeBlocking(blockingCodeHandler1, false, ar -> {}); vertx.executeBlocking(blockingCodeHandler2, false, ar -> {}); vertx.executeBlocking(blockingCodeHandler3, false, ar -> {}); }); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class UsingEventLoopsFromHttpServers { private static Handler<HttpServerRequest> requestHandler = req -> {}; public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.runOnContext(v -> { vertx.createHttpServer().requestHandler(requestHandler).listen(result -> { // This executes in a context System.out.println("Current thread is " + Thread.currentThread()); }); vertx.createHttpServer().requestHandler(requestHandler).listen(result -> { // This executes in the same context System.out.println("Current thread is " + Thread.currentThread()); }); }); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class CreatingAndUsingContextFromMain { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); Context context = vertx.getOrCreateContext(); context.runOnContext(v -> { System.out.println("Current context is " + Vertx.currentContext()); System.exit(0); }); } public static void source() { Vertx vertx = Vertx.vertx(); Context context = vertx.getOrCreateContext(); context.runOnContext(v -> { System.out.println("Current context is " + Vertx.currentContext()); }); } }
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class GettingOrCreatingContextFromVerticle { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.deployVerticle(new AbstractVerticle() { public void start() throws Exception { Context context = vertx.getOrCreateContext(); System.out.println(context); System.out.println(vertx.getOrCreateContext()); System.exit(0); } }); } public static void source() { Vertx vertx = Vertx.vertx(); vertx.deployVerticle(new AbstractVerticle() { public void start() throws Exception { Context context = vertx.getOrCreateContext(); System.out.println(context); System.out.println(vertx.getOrCreateContext()); } }); } }
@Source public class ExecuteBlockingRunOnContext {
@Source public class SharingStateInContext {
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */ @Source public class CurrentContextFromVerticle { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.deployVerticle(new AbstractVerticle() { public void start() throws Exception { System.out.println("Current context is " + Vertx.currentContext()); System.out.println("Verticle context is " + context); System.exit(0); } }); } public static void source() { Vertx vertx = Vertx.vertx(); vertx.deployVerticle(new AbstractVerticle() { public void start() throws Exception { System.out.println("Current context is " + Vertx.currentContext()); System.out.println("Verticle context is " + context); } }); } }
@Source public class ExecuteBlockingFailingFuture {
@Source public class ExecuteBlockingSuccess {
@Source public class BlockingEventLoop {