我试图用裸 Vertx 创建一个 Quarkus 应用程序。但是,我不能多次卷曲。只有第一个 curl 给了我正确的回应。
我尝试在没有 Quarkus 的情况下使用 Vertx(主要方法)。然后一切正常。每个卷曲都会给出正确的响应。所以我认为我在使用 Quarkus 时初始化 Vertx 是错误的。
代码:垂直部署器
package Super.Company.App;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import io.quarkus.runtime.StartupEvent;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Verticle;
import io.vertx.core.Vertx;
@ApplicationScoped
public class App {
@Inject
Vertx vertx;
public void init(@Observes StartupEvent e, Vertx vertx, Instance<AbstractVerticle> verticles) {
for (AbstractVerticle verticle : verticles) {
vertx.deployVerticle(verticle);
}
}
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
Verticle myVerticle = new MyVerticle();
vertx.deployVerticle(myVerticle);
}
}
代码:垂直
package Super.Company.App;
import javax.enterprise.context.ApplicationScoped;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.ext.web.Router;
@ApplicationScoped
public class MyVerticle extends AbstractVerticle {
@Override
public void start() {
HttpServer server = vertx.createHttpServer();
Router router = Router.router(vertx);
router.route().handler(routingContext -> {
// This handler will be called for every request
HttpServerResponse response = routingContext.response();
response.putHeader("content-type", "text/plain");
// Write to the response and end it
response.end("Hello World from Vert.x-Web!");
});
server.requestHandler(router).listen(8080);
}
}
编辑:我向 curl 命令发送了垃圾邮件,偶尔我得到了正确的响应。每 16 个 curl 命令都会正确响应。
更新:除了 curl 垃圾邮件,我做了一些测试。我用过嘿,邮递员,谷歌浏览器和 Safari。
嘿:5% - 15% 是 200,其余的是 404。
邮递员:我只收到404,但是重启服务器后,它只响应200。
浏览器:只有一个选项卡可以连接到服务器。我可以多次刷新这个水龙头,服务器每次发送一个 200。我必须重新启动服务器才能连接其他选项卡。但是,如果我刷新其他选项卡,它们会得到 404。