0

ブックマーク サービスの例に基づいて 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 もこれをサポートしていますか?

4

1 に答える 1