У меня есть API, на котором работают Spring Boot 3.4.5 и Java 2.1. Проблема в том, что ответ на первый вызов API занимает 5–6 секунд, а если API не используется в течение длительного времени, повторный ответ также занимает 5–6 секунд. В противном случае ответ займет менее 1 секунды.
Задержка значительна в части веб-клиента, но если я использую клиент непосредственно в Postman, ответ займет не более 1 секунды.
package com.bum.srvapivalidatesender.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.netty.http.client.HttpClient;
import reactor.netty.http.HttpProtocol;
import reactor.netty.resources.ConnectionProvider;
import java.time.Duration;
@Configuration
public class WebClientConfig {
private EnvironmentPropertyConfig environmentPropertyConfig;
public WebClientConfig(EnvironmentPropertyConfig environmentPropertyConfig){
this.environmentPropertyConfig = environmentPropertyConfig;
}
@Bean
public WebClient.Builder webClientBuilder() {
ConnectionProvider connectionProvider = ConnectionProvider.builder("custom-pool")
.maxConnections(50)
.pendingAcquireMaxCount(100)
.pendingAcquireTimeout(Duration.ofSeconds(3))
.maxIdleTime(Duration.ofSeconds(20))
.maxLifeTime(Duration.ofMinutes(5))
.evictInBackground(Duration.ofSeconds(30))
.build();
HttpClient httpClient = HttpClient.create(connectionProvider)
.protocol(HttpProtocol.H2, HttpProtocol.HTTP11)
.compress(true)
.responseTimeout(Duration.ofMillis(Long.parseLong(environmentPropertyConfig.getTimeout())))
.option(io.netty.channel.ChannelOption.CONNECT_TIMEOUT_MILLIS, Integer.parseInt(environmentPropertyConfig.getTimeout()))
.option(io.netty.channel.ChannelOption.SO_KEEPALIVE, true)
.option(io.netty.channel.ChannelOption.TCP_NODELAY, true);
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient));
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... onsumption
Задержка при первом использовании API ⇐ JAVA
Программисты JAVA общаются здесь
1770232340
Anonymous
У меня есть API, на котором работают Spring Boot 3.4.5 и Java 2.1. Проблема в том, что ответ на первый вызов API занимает 5–6 секунд, а если API не используется в течение длительного времени, повторный ответ также занимает 5–6 секунд. В противном случае ответ займет менее 1 секунды.
Задержка значительна в части веб-клиента, но если я использую клиент непосредственно в Postman, ответ займет не более 1 секунды.
package com.bum.srvapivalidatesender.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.netty.http.client.HttpClient;
import reactor.netty.http.HttpProtocol;
import reactor.netty.resources.ConnectionProvider;
import java.time.Duration;
@Configuration
public class WebClientConfig {
private EnvironmentPropertyConfig environmentPropertyConfig;
public WebClientConfig(EnvironmentPropertyConfig environmentPropertyConfig){
this.environmentPropertyConfig = environmentPropertyConfig;
}
@Bean
public WebClient.Builder webClientBuilder() {
ConnectionProvider connectionProvider = ConnectionProvider.builder("custom-pool")
.maxConnections(50)
.pendingAcquireMaxCount(100)
.pendingAcquireTimeout(Duration.ofSeconds(3))
.maxIdleTime(Duration.ofSeconds(20))
.maxLifeTime(Duration.ofMinutes(5))
.evictInBackground(Duration.ofSeconds(30))
.build();
HttpClient httpClient = HttpClient.create(connectionProvider)
.protocol(HttpProtocol.H2, HttpProtocol.HTTP11)
.compress(true)
.responseTimeout(Duration.ofMillis(Long.parseLong(environmentPropertyConfig.getTimeout())))
.option(io.netty.channel.ChannelOption.CONNECT_TIMEOUT_MILLIS, Integer.parseInt(environmentPropertyConfig.getTimeout()))
.option(io.netty.channel.ChannelOption.SO_KEEPALIVE, true)
.option(io.netty.channel.ChannelOption.TCP_NODELAY, true);
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient));
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79883011/delay-in-the-first-api-consumption[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия