Код: Выделить всё
import feign.Client;
import feign.Request;
import feign.Retryer;
import feign.okhttp.OkHttpClient;
import okhttp3.ConnectionPool;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.netflix.ribbon.SpringClientFactory;
import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory;
import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PreDestroy;
@Configuration
public class FeignConfig {
@Value("${timeout.internal.connect}")
private int internalConnectTimeout;
@Value("${timeout.internal.read}")
private int internalReadTimeout;
private okhttp3.OkHttpClient okHttpClient;
@Bean
public Request.Options timeoutConfiguration() {
return new Request.Options(internalConnectTimeout, internalReadTimeout);
}
@Bean
public Retryer retryer() {
return new Retryer.Default(1000, 8000, 2);
}
@Bean
public Client feignClient(
@Qualifier("retryabeCachingLBClientFactory") CachingSpringLoadBalancerFactory retryableFactory,
SpringClientFactory clientFactory) {
okHttpClient = new okhttp3.OkHttpClient();
OkHttpClient delegate = new OkHttpClient(okHttpClient);
return new LoadBalancerFeignClient(delegate, retryableFactory, clientFactory);
}
@PreDestroy
public void tearDown() {
ConnectionPool connectionPool = okHttpClient.connectionPool();
if (connectionPool != null && connectionPool.connectionCount() > 0) {
okHttpClient.dispatcher().executorService().shutdown();
connectionPool.evictAll();
}
}
}
< /code>
Я обновил код этой версии: < /p>
import feign.Client;
import feign.Request;
import feign.Retryer;
import feign.okhttp.OkHttpClient;
import okhttp3.ConnectionPool;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient;
import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import jakarta.annotation.PreDestroy;
import java.util.concurrent.TimeUnit;
@Configuration
public class FeignConfig {
@Value("${psp.hosted.timeout.internal.connect}")
private int internalConnectTimeout;
@Value("${psp.hosted.timeout.internal.read}")
private int internalReadTimeout;
private okhttp3.OkHttpClient okHttpClient;
@Bean
public Request.Options timeoutConfiguration() {
return new Request.Options(internalConnectTimeout, internalReadTimeout);
}
@Bean
public Retryer retryer() {
return new Retryer.Default(1000, 8000, 2);
}
@Bean
public Client feignClient(BlockingLoadBalancerClient loadBalancerClient) {
okHttpClient = new okhttp3.OkHttpClient.Builder()
.connectTimeout(internalConnectTimeout, TimeUnit.MILLISECONDS)
.readTimeout(internalReadTimeout, TimeUnit.MILLISECONDS)
.build();
OkHttpClient delegate = new OkHttpClient(okHttpClient);
return new FeignBlockingLoadBalancerClient(delegate, loadBalancerClient);
}
@PreDestroy
public void tearDown() {
ConnectionPool connectionPool = okHttpClient.connectionPool();
if (connectionPool != null && connectionPool.connectionCount() > 0) {
okHttpClient.dispatcher().executorService().shutdown();
connectionPool.evictAll();
}
}
}
< /code>
Я получаю эту ошибку: < /p>
Cannot resolve constructor 'FeignBlockingLoadBalancerClient(OkHttpClient, BlockingLoadBalancerClient)'
Подробнее здесь: https://stackoverflow.com/questions/797 ... ent-blocki