Spring 云负载均衡器 - 带有健康检查/重试的 Feign + SimpleDiscoveryClient
Posted
技术标签:
【中文标题】Spring 云负载均衡器 - 带有健康检查/重试的 Feign + SimpleDiscoveryClient【英文标题】:Spring cloud loadbalancer - Feign + SimpleDiscoveryClient with healthcheck/retry 【发布时间】:2021-10-08 11:26:32 【问题描述】:升级 Spring Cloud 版本后,我正在努力从 Ribbon 切换到 Spring Cloud Loadbalancer。 使用 Feign 设置 SimpleDiscoveryClient 很容易。 但是 simplediscovery 客户端“太简单了”。 我想至少添加一个运行状况检查,这样它就不会使用可能已关闭的实例,最好也是重试机制。 我已经一遍又一遍地阅读文档,但找不到简单的设置方法。
https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#instance-health-check-for-loadbalancer 我找到了这个用于健康检查的示例自定义配置,但它不起作用。
public class CustomLoadBalancerConfiguration
@Bean
public ServiceInstanceListSupplier discoveryClientServiceInstanceListSupplier(
ConfigurableApplicationContext context)
return ServiceInstanceListSupplier.builder()
.withDiscoveryClient()
.withHealthChecks()
.build(context);
如果我按原样运行它,它会引发以下缺失 bean 错误: XXX.CustomLoadBalancerConfig 中的方法 discoveryClientServiceInstanceListSupplier 需要一个找不到的 'org.springframework.web.client.RestTemplate' 类型的 bean。
谁能给我一些关于如何使它工作或如何复制功能区行为的指示?
【问题讨论】:
【参考方案1】:在您的配置中添加以下 RestTemplate Bean。
@Bean
public RestTemplate restTemplate()
return new RestTemplate();
【讨论】:
以上是关于Spring 云负载均衡器 - 带有健康检查/重试的 Feign + SimpleDiscoveryClient的主要内容,如果未能解决你的问题,请参考以下文章