gpt4 book ai didi

java - 需要扩展 Vertx Http Server 的帮助

转载 作者:行者123 更新时间:2023-12-01 21:24:18 25 4
gpt4 key购买 nike

我是 Vertx 的新手,尝试了一些方法来更好地理解 vertx。我已经编写了一个应用程序,需要一些帮助来部署该应用程序的多个实例,我粘贴了下面的代码,任何人都可以让我知道这是否正确以及正确的方法。提前致谢。

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
import io.vertx.core.eventbus.EventBus;
import io.vertx.core.http.HttpMethod;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.ext.web.handler.CorsHandler;

import com.test.handler.ApiRequestHandler;
import com.test.handler.PushToRedisApiHandler;
import com.test.handler.RequestValidationHandler;
import com.test.utils.JedisLocalConnectionPool;
import com.test.utils.JedisMasterConnectionPool;

public class TestServer extends AbstractVerticle {

@Override
public void start(Future<Void> future) {

JedisLocalConnectionPool localJedisPool = new JedisLocalConnectionPool(
config().getString("redis.local.host", "127.0.0.1"), config()
.getInteger("redis.port", 6379), config().getString(
"redis.password", ""));

JedisMasterConnectionPool masterJedisPool = new JedisMasterConnectionPool(
config().getString("redis.master.host", "127.0.0.1"), config()
.getInteger("redis.port", 6379), config().getString(
"redis.password", ""));

EventBus eventBus = vertx.eventBus();

Router router = Router.router(vertx);
router.route().consumes("application/json");
router.route().produces("application/json");
router.route().handler(
CorsHandler.create("*").allowedMethod(HttpMethod.POST));
router.route().handler(BodyHandler.create());
router.post("/api/process-api-request").handler(
new ApiRequestHandler(eventBus, localJedisPool));


PushToRedisApiHandler pushToRedisHandler = new PushToRedisApiHandler(
masterJedisPool);
RequestValidationHandler validationHandler = new RequestValidationHandler(
localJedisPool, masterJedisPool);
eventBus.consumer("push.to.redis", pushToRedisHandler);
eventBus.consumer("push.to.redis", validationHandler);

// for running multiple instances
for (int i = 0; i < 4; i++) {
vertx.createHttpServer().requestHandler(router::accept)
.listen(config().getInteger("http.port", 80));
}
}
}

最佳答案

那是错误的,您不必在 verticle 内多次实例化 http 服务器。您必须多次实例化 Verticle 本身。

您可以使用 vertx 二进制文件或 fatjar 启动 verticle(这里是一个示例 https://github.com/floriankammermann/vertx-examples/tree/master/hello-world-java )

您可以添加此命令行参数来部署多个实例:--instances 2

您还可以以编程方式部署 Verticle 并传递实例数量。您可以在这里找到一个示例:https://github.com/floriankammermann/vertx-examples/blob/master/verticle-instances/src/main/java/org/swisspush/vertx/examples/CryptoVerticleStarter.java

关于java - 需要扩展 Vertx Http Server 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com