Vert.x 代理服务 - 处理不同机器上的路由

Vert.x Proxy Service - handle routing on different machiens

我有一个带有 2 个端点的网络服务器,我想在不同的机器上处理它们。它们是独立的,更新一个时我不想重新启动另一个。

    Router router = Router.router(vertx);
    router.route("/api*").handler(BodyHandler.create());
    router.post("/api/end_point_1").handler(new Handler1());
    router.post("/api/end_point_2").handler(new Handler2());

如何在 Vert.x 中实现此目的?我一直在阅读 Vert.x Service Proxy 但是我不太确定如何将它应用到路由器上。

我会简单地将代码打包为两个不同的 JAR,然后独立部署它们。然后 load-balancer/API gateway/reverse-proxy 会根据请求 URI 将流量发送到正确的服务器。

您要找的是 Vertx 集群。

您的处理程序看起来像这样:

router.post("/api/end_point_1").handler(req -> {
   // Extract data from request
   // Package it into an object

   // Send it over EventBus
   vertx.eventBus().send("event1", data);
});

现在在单独的应用程序中创建另一个 Verticle,应该这样做:

vertx.eventBus().consumer("event1");
    consumer.handler(o -> {
        System.out.println("Got message" + o.body());           
    });

现在 运行 这些单独的 Jar 遵循此指南:http://vertx.io/docs/vertx-hazelcast/java/