我有这段代码,我想迁移到最新版本的
'org.springframework.cloud:spring-cloud-openfeign-core:3.1.1'
import feign.Client;
import feign.httpclient.ApacheHttpClient;
import org.apache.http.conn.HttpClientConnectionManager;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
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;
@Configuration
public class LoadbalancerConfig {
@Bean
public Client client(
HttpClientConnectionManager httpClientConnectionManager,
CachingSpringLoadBalancerFactory lbClientFactory,
SpringClientFactory clientFactory) {
CloseableHttpClient closeableHttpClient = HttpClients.custom()
.setConnectionManager(httpClientConnectionManager)
.build();
ApacheHttpClient client = new ApacheHttpClient(closeableHttpClient);
return new LoadBalancerFeignClient(client, lbClientFactory, clientFactory);
}
}
对于版本
'org.springframework.cloud:spring-cloud-openfeign-core:2.2.2.RELEASE'
,当我切换到版本 3.1.1 时,代码运行良好,但出现导入错误:
Cannot resolve symbol 'ribbon'
你知道我必须如何迁移代码吗?
Searching more about...我在这个topic中发现了一个问题:
spring-cloud-netflix-ribbon 已经从 SpringCloud 中删除了这个版本
然后你需要将
spring-cloud-starter-loadbalancer
依赖添加到你的项目中。
implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer:3.1.1'
Spring Cloud OpenFeign 官方参考在
1.2 Overriding Feign Defaults
部分:
Client feignClient: 如果 Ribbon 在类路径中并且被启用它是一个 LoadBalancerFeignClient,
否则,如果 Spring Cloud LoadBalancer 在类路径中, 使用FeignBlockingLoadBalancerClient
如果它们都不在类路径中,则使用默认的 feign 客户端。
所以你可以尝试在
FeignBlockingLoadBalancerClient
中使用LoadBalancerConfig
:
import feign.Client;
import feign.httpclient.ApacheHttpClient;
import org.apache.http.conn.HttpClientConnectionManager;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class LoadBalancerConfig {
@Bean
public Client client(HttpClientConnectionManager connectionManager,
LoadBalancerClient lbClient,
LoadBalancerClientFactory lbClientFactory) {
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.build();
ApacheHttpClient client = new ApacheHttpClient(httpClient);
return new FeignBlockingLoadBalancerClient(client, lbClient, lbClientFactory);
}
}
• Android 本地单元测试通过,但编辑器窗口“无法解析符号”
• 文件路径无法从 typescript 解析为 javascript
• 我在使用 FirestoreRecyclerOptions 时遇到错误我应该做什么
• 上下文绑定“时间”原因:“无法解析符号 flatMap”
• “where”运算符:无法解析名为“<column name>”
• 如何修复无法解析符号“setDownloadListener”?
• AnalysisException:无法解析给定输入列的“timestamp”:[date_trunc(hour, timestamp)];
• Chart.js 未捕获类型错误:无法解析模块说明符“@kurkle/color”
• 插件:vite:导入分析]无法从“sr”解析导入“./createEventListeners”
• 使用 kubectl 命令时 Kubernetes 出现问题
• 用 Java 解析 LocalDate:“2020 年 3 月 26 日”的模式是什么