问题遇到的现象和发生背景
由于引入spring-cloud-starter-kubernetes-ribbon后和docker-client包的jersey-client冲突,去掉了版本低的包,然后就包下面的异常了
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId> <exclusions> <exclusion> <artifactId>jersey-client</artifactId> <groupId>com.sun.jersey</groupId> </exclusion> </exclusions> </dependency> <!-- docker --> <dependency> <groupId>com.spotify</groupId> <artifactId>docker-client</artifactId> <version>${docker.client.version}</version> </dependency>
问题相关代码,请勿粘贴截图
使用服务发现功能请求接口,报错
@FeignClient(contextId = "caasRegistry", name = "caas-api-svc", configuration = {FeignExceptionDecoder.class})
运行结果及报错内容
2022-03-29 20:41:38.125 ERROR 1 --- [nio-8080-exec-9] c.h.c.r.s.impl.RegistryServiceImpl : 创建制品服务64a44df92dca4c9585c4fe8f35e68b71后,调用caas处理后续逻辑异常:Error creating bean with name 'ribbonLoadBalancingHttpClient' defined in org.springframework.cloud.netflix.ribbon.apache.HttpClientRibbonConfiguration: Unsatisfied dependency expressed through method 'ribbonLoadBalancingHttpClient' parameter 2; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ribbonLoadBalancer' defined in org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.loadbalancer.ILoadBalancer]: Factory method 'ribbonLoadBalancer' threw exception; nested exception is java.lang.IllegalArgumentException: Name must be provided.
2022-03-29 20:41:39.125 WARN 1 --- [erListUpdater-0] c.n.l.PollingServerListUpdater : Failed one update cycle
java.lang.IllegalArgumentException: Name must be provided.
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.withName(BaseOperation.java:255) ~[kubernetes-client-4.13.2.jar!/:na]
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.withName(BaseOperation.java:84) ~[kubernetes-client-4.13.2.jar!/:na]
at org.springframework.cloud.kubernetes.ribbon.KubernetesEndpointsServerList.getUpdatedListOfServers(KubernetesEndpointsServerList.java:57) ~[spring-cloud-kubernetes-ribbon-1.1.10.RELEASE.jar!/:1.1.10.RELEASE]
at com.netflix.loadbalancer.DynamicServerListLoadBalancer.updateListOfServers(DynamicServerListLoadBalancer.java:240) ~[ribbon-loadbalancer-2.3.0.jar!/:2.3.0]
at com.netflix.loadbalancer.DynamicServerListLoadBalancer$1.doUpdate(DynamicServerListLoadBalancer.java:62) ~[ribbon-loadbalancer-2.3.0.jar!/:2.3.0]
at com.netflix.loadbalancer.PollingServerListUpdater$1.run(PollingServerListUpdater.java:116) ~[ribbon-loadbalancer-2.3.0.jar!/:2.3.0]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
我的解答思路和尝试过的方法
我想要达到的结果
请求成功!