package io.vertx.example.camel.rmi; import io.vertx.camel.CamelBridge; import io.vertx.camel.CamelBridgeOptions; import io.vertx.core.AbstractVerticle; import io.vertx.core.Vertx; import io.vertx.core.http.HttpServerRequest; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.builder.RouteBuilder; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import static io.vertx.camel.OutboundMapping.fromVertx; /** * @author <a href="http://escoffier.me">Clement Escoffier</a> */ public class RMIExample extends AbstractVerticle { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.deployVerticle(RMIExample.class.getName()); } @Override public void start() throws Exception { ApplicationContext app = new ClassPathXmlApplicationContext("META-INF/spring/camelContext.xml"); CamelContext camel = app.getBean("camel", CamelContext.class); CamelBridge.create(vertx, new CamelBridgeOptions(camel) .addOutboundMapping(fromVertx("invocation").toCamel("rmiService"))) .start(); vertx.createHttpServer() .requestHandler(this::invoke) .listen(8080); } private void invoke(HttpServerRequest request) { String param = request.getParam("name"); if (param == null) { param = "vert.x"; } vertx.eventBus().<String>send("invocation", param, reply -> { if (reply.failed()) { request.response().setStatusCode(400).end(reply.cause().getMessage()); } else { request.response().setStatusCode(400).end(reply.result().body()); } }); } }