我成功地让我的 RestTemplate 客户端使用 Eureka 发现远程服务,并使用功能区将调用转发给它,如文档中所述。基本上,只需在我的 Application 类中添加以下注释,然后让 Spring-Boot 的魔力完成剩下的工作:
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableDiscoveryClient
(PS:您注意到我使用的是 spring-cloud:1.0.0-SNAPSHOT-BUILD 而不是 1.0.0.M3 - 但这似乎不会影响我的问题)。
当两个服务实例启动时,rest-template 客户端成功地对两者之间的请求进行负载均衡。但是,如果第一个实例在 Eureka 负载均衡器通知之前停止,客户端将不会回退到第二个实例,而是引发异常。
因此我的问题是:有没有办法配置 RestTemplate/Ribbon/Eureka 堆栈,如果第一个选择的实例不可用,则自动重试对另一个实例的调用?Zuul 代理和 feign 客户端“开箱即用”执行此操作,因此我相信该库拥有必要的功能......
任何想法/提示?
谢谢,/伯特兰