ブックマーク サービスの例に基づいて RestTemplate を使用してリボンの構成を試みていますが、運が悪かったため、ここに私のコードを示します。
@SpringBootApplication
@RestController
@RibbonClient(name = "foo", configuration = SampleRibbonConfiguration.class)
public class BookmarkServiceApplication {
public static void main(String[] args) {
SpringApplication.run(BookmarkServiceApplication.class, args);
}
@Autowired
RestTemplate restTemplate;
@RequestMapping("/hello")
public String hello() {
String greeting = this.restTemplate.getForObject("http://foo/hello", String.class);
return String.format("%s, %s!", greeting);
}
}
以下のようなエラーページで:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Mar 22 19:59:33 GMT+08:00 2016
There was an unexpected error (type=Internal Server Error, status=500).
No instances available for foo
しかし、アノテーション @RibbonClient を削除すると、すべて問題なく動作します。
@RibbonClient(name = "foo", configuration = SampleRibbonConfiguration.class)
そして、ここに SampleRibbonConfiguration の実装があります:
public class SampleRibbonConfiguration {
@Autowired
IClientConfig ribbonClientConfig;
@Bean
public IPing ribbonPing(IClientConfig config) {
return new PingUrl();
}
@Bean
public IRule ribbonRule(IClientConfig config) {
return new AvailabilityFilteringRule();
}
}
RibbonClient が RestTemplate と連携できないからでしょうか。
別の質問は、負荷分散ルールのようなリボン構成を application.yml 構成ファイルを介して構成できるかということです。リボン wikiのように、プロパティ ファイルで NFLoadBalancerClassName、NFLoadBalancerRuleClassName などのリボン パラメーターを構成できるようですが、Spring Cloud もこれをサポートしていますか?