package io.vertx.examples.openshift;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.servicediscovery.ServiceDiscovery;
import io.vertx.servicediscovery.kubernetes.KubernetesServiceImporter;
import io.vertx.servicediscovery.types.HttpEndpoint;
public class MyHttpVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
// Create the service discovery object and register the Kubernetes importer
// We limit the lookup to the current namespace.
ServiceDiscovery discovery = ServiceDiscovery.create(vertx);
discovery.registerServiceImporter(new KubernetesServiceImporter(), new JsonObject().put("namespace", "vertx-demo"));
Router router = Router.router(vertx);
router.get("/").handler(rc -> {
String param = rc.request().getParam("name") == null ? "world" : rc.request().getParam("name");
HttpEndpoint.getClient(discovery, new JsonObject().put("name", "http-backend"), ar -> {
if (ar.failed()) {
rc.response().setStatusCode(400).end("No `http-backend` service");
} else {
ar.result().getNow("/?name=" + param, request -> {
request.bodyHandler(body -> {
rc.response().end(body);
ar.result().close();
});
});
}
});
});
vertx.createHttpServer()
.requestHandler(router::accept)
.listen(8080);
}
}