繁体   English   中英

Quarkus RESTEasy Reactive 未按预期工作

[英]Quarkus RESTEasy Reactive not working as I expected

我创建了一个 Quarkus RESTEasy Reactive 示例应用程序(从 start-coding 开始),并为 GreetingResource 添加了以下代码:

@Path("/proxy/{application}/{any: .*}")
@ApplicationScoped
public class GreetingResource {

    ExecutorService myWorkerPool = Executors.newFixedThreadPool(100);
    private static final Logger log = Logger.getLogger(GreetingResource.class);

    @GET
    public Uni<Response> hello() {
        log.info("request started at " + System.currentTimeMillis());
        Uni<Response> item = Uni.createFrom().item(() -> {
            log.info("starting uni");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            log.info("building response");
            return Response.ok(1).build();
        })
                //.runSubscriptionOn(Infrastructure.getDefaultWorkerPool()); // same poor performance
                .runSubscriptionOn(myWorkerPool);
        return item;
    }
}

如果我从 Chrome 开发工具控制台运行一些并发请求,我会看到这些日志和我的请求的瀑布图: quarkus 日志和请求瀑布

难道我做错了什么? 因为这似乎根本没有反应。 请求应该或多或少在同一时间范围内开始,并且当工作线程完成工作时,响应应该由事件循环线程返回。 在接受另一个请求之前,事件循环不应等待其他工作线程完成。

谢谢

做很多测试,实际上从浏览器控制台访问同一个端点,这不是一个好主意,因为它会等待上一个调用完成。

另外,我尝试使用 apache 基准(10 个调用,10 个并发)运行,它按预期运行 9 个调用,第一个将始终等待完成,但我认为这与 apache 基准有关。 结束这个问题。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM