Spring云负载均衡器- Feign + SimpleDiscoveryClient with healthcheck



在升级Spring Cloud版本后,我正在努力从Ribbon切换到Spring Cloud Loadbalancer。用Feign设置SimpleDiscoveryClient很容易。但是简单发现客户端"太简单了"。我想至少添加一个健康检查,这样它就不会使用一个可能关闭的实例&最好还有重试机制。我已经阅读了关于& &;结束,但找不到一个简单的方法来设置。

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中的discoveryClientServiceInstanceListSupplier方法。CustomLoadBalancerConfig需要一个类型为"org.springframework.web.client"的bean。找不到RestTemplate

谁能给我一些关于如何得到这个工作或如何我可以复制丝带行为的指针?

在您的配置中添加以下RestTemplate Bean。

@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}

尝试将以下内容添加到应用程序类

@LoadBalancerClients(defaultConfiguration = LoadBalancerClientConfiguration.class)
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}

这将启用DiscoveryClientServiceInstanceListSupplier的创建(注意,类本身在上下文中不可用,因此您不能仅仅自动地将它用于测试)。

相关内容

  • 没有找到相关文章

最新更新