public class SendCuteNamesAPI extends CacheAccessVerticle {

   public static final String CUTE_NAMES_ADDRESS = "cute-names";
   private final Logger logger = Logger.getLogger(SendCuteNamesAPI.class.getName());

   @Override
   protected void initSuccess(Future<Void> startFuture) {
      logger.info("Starting SendCuteNamesAPI");
      Router router = Router.router(vertx);

      router.get("/").handler(rc -> {
         rc.response().putHeader("content-type", "text/html")
               .end("Welcome to Send Cute Names API Service");
      });

      SockJSHandler sockJSHandler = SockJSHandler.create(vertx);
      BridgeOptions options = new BridgeOptions();
      options.addOutboundPermitted(new PermittedOptions().setAddress(CUTE_NAMES_ADDRESS));
      sockJSHandler.bridge(options);
      router.route("/eventbus/*").handler(sockJSHandler);

      vertx.createHttpServer()
            .requestHandler(router::accept)
            .rxListen(config().getInteger("http.port", 8080))
            .doOnSuccess(server -> logger.info("HTTP server started"))
            .doOnError(t -> logger.log(Level.SEVERE, "HTTP server failed to start", t))
            .toCompletable()
            .subscribe(CompletableHelper.toObserver(startFuture));
   }
   
   public static void main(String[] args) {
      Vertx vertx = Vertx.vertx();
      DeploymentOptions options = new DeploymentOptions()
            .setConfig(new JsonObject()
                  .put("http.port", 8082)
                  .put("infinispan.host", "localhost")
            );
      vertx.deployVerticle(SendCuteNamesAPI.class.getName(), options);
   }
}