1
전체 코드가 아니라 내 문제의 코드 스 니펫을 게시하고 있습니다. 다음과 같이 HttpClientOptions을 설정했습니다.Vertx HttpClient가 시간 초과하지 않습니다.
HttpClientOptions clientOptions = new HttpClientOptions()
.setDefaultHost(host)
.setDefaultPort(port)
.setMaxPoolSize(config.getMaxPoolSize())
.setConnectTimeout(config.getTimeout());
HttpClient httpClient = vertx.createHttpClient(clientOptions);
그리고는 나는 다음과 같이 게시 요청이 클라이언트를 사용 :
httpClient.post(ePoint, httpClientResponse -> {
httpClientResponse.bodyHandler(body -> {
if (body.length() == 0) {
ctx.fail();
return;
}
String bodyString = body.toString();
int statusCode = httpClientResponse.statusCode();
if (statusCode != HttpStatus.SC_CREATED) {
ctx.fail();
return;
}
logger.info(ctx, "blah blah");
ctx.next();
})
.exceptionHandler(throwable -> {
ctx.fail();
});
을하지만 수신자 측 예외 핸들러에서 시뮬레이션에게 타임 아웃을 할 경우 호출되지 않습니다. 하지만 게시물 요청 예외 처리기에서 다음과 같이 시간 제한을 설정하면 예외가 발생합니다.
httpClient.post(ePoint, httpClientResponse -> {
httpClientResponse.bodyHandler(body -> {
if (body.length() == 0) {
ctx.fail();
return;
}
String bodyString = body.toString();
int statusCode = httpClientResponse.statusCode();
if (statusCode != HttpStatus.SC_CREATED) {
ctx.fail();
return;
}
logger.info(ctx, "blah blah");
ctx.next();
}).setTimeout(config.getTimeout())
.exceptionHandler(throwable -> {
ctx.fail();
});
이 버그는 Vertx 버그 또는 디자인입니다.
내가 생각 설치에 요청 수준에서 제한 시간을 필요 [차이 - 사이 - 웹 서비스 연결 시간 제한 및 요청 - 타임 아웃] (https://stackoverflow.com/questions/34354525/difference -with-web-service-connection-timeout-and-request-timeout)은 차이점을 설명합니다. – Tharanga