gpt4 book ai didi

java - Quarkus 响应式(Reactive)客户端真的是响应式(Reactive)的吗?

转载 作者:行者123 更新时间:2023-12-05 03:18:48 25 4
gpt4 key购买 nike

我想探索来自 Quarkus 的响应式 REST 客户端的慢速后端,并在他们建议的样本 (https://github.com/quarkusio/quarkus-quickstarts/tree/main/rest-client-reactive-quickstart) 上做了一些负载测试,只做了一些小的修改。我的 build.gradle 中有以下依赖项,Quarkus 版本设置为 2.11.3.Final:

dependencies {
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-rest-client-reactive'
implementation 'io.quarkus:quarkus-resteasy-reactive'
implementation 'io.quarkus:quarkus-arc'
testImplementation 'io.quarkus:quarkus-junit5'
testImplementation 'io.rest-assured:rest-assured'
}

我想用两种变体检查响应缓慢的后端的行为

我的资源和调用后端的客户端如下所示:

@Path("/reactive")
public class ReactiveResource {

@RestClient
TimeoutTestService service;

@GET
@Path("delay")
@Produces(MediaType.TEXT_PLAIN)
public Uni<String> reactiveThreadTimeout() {
return Uni.createFrom().item("Hello RESTEasy")
.onItem().delayIt().by(Duration.of(1, ChronoUnit.SECONDS));
}

@GET
@Path("remote")
@Produces(MediaType.TEXT_PLAIN)
public Uni<String> reactiveRemoteTimeout() {
return service.testTimeoutReactive();
}

}
@RegisterRestClient(baseUri = "http://localhost:8500")
@Produces(MediaType.TEXT_PLAIN)
public interface TimeoutTestService {

@GET
@Path("/reactive")
Uni<String> testTimeoutReactive();

}

通过负载测试,我对第一个变体没有任何问题,所有请求都在 1 秒内得到响应,即使每秒有 300 个请求。在第二个变体中,它以 20 rps 的速度完美运行,但随着负载响应时间的增加,它会慢慢增加,就好像有什么东西阻塞了调用线程一样。我可以排除 go 服务器,因为它可以在直接调用它时毫无问题地处理 300 rps。也许问题是由于 Quarkus 和在我的本地计算机上运行的 go 服务器造成的,但我仍然希望响应式(Reactive)客户端能获得更好的结果。在使用超过基本负载的响应式(Reactive)客户端时,是否还有其他人观察到类似的问题?

最佳答案

你遇到了 https://github.com/quarkusio/quarkus/issues/21884 .看似出乎意料,但客户端有一个默认大小为20的连接池。如果你想允许比20更多的并发请求,你可以重新配置它:

quarkus.rest-client."com.example.TimeoutTestService".connection-pool-size=100

关于java - Quarkus 响应式(Reactive)客户端真的是响应式(Reactive)的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73605586/

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