java 使用带有裸顶点的Quarkus:服务器仅响应一个连接

lg40wkob  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(116)

我试着创建一个Quarkus应用程序,但是我不能 curl 多次,只有第一次 curl 给予我正确的React。
我试着使用没有Quarkus的Vertx(main方法)。然后一切都很好。每个curl都给出了正确的响应。所以我想我在使用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垃圾邮件,我做了一些测试。我使用了hey, Postman ,谷歌浏览器和Safari。
哎:百分之五到十五是二百,剩下的是四百四。
Postman :我只收到404,但重启服务器后,只收到200。
浏览器:只有一个标签可以连接到服务器。我可以多次刷新这个标签,服务器每次都会发送一个200。我必须重新启动服务器才能连接到其他标签。但是,如果我刷新其他标签,他们会得到一个404。

qij5mzcb

qij5mzcb1#

您在同一个应用程序中创建了2个顶点示例。
1.进样一个
1.在主方法上手动创建一个
为什么注射的一个不够?
你把verticle部署到每个顶点示例上。init方法中的verticle是从哪里来的?
如果你在一个 quarkus 应用程序中,显式启动主 quarkus 方法会更好。
注入的vertx示例应该是你唯一应该使用的。对于你的简单情况。尝试理解 quarkus 中的依赖注入

相关问题