@LoadBalanced
Rest テンプレートは、リボンを使用したクライアント側の負荷分散に基づく必要があり、サービス名をホスト/ポートに解決するために Eureka サーバーをチェックする必要があることを理解しています。
の用途は何ですか@RibbonClient
。Eureka なしでネイティブのリボン クライアント LB をサポートし、構成時に Eureka Discover もサポートしDiscoveryEnabledNIWSServerList
ますか?
@LoadBalanced
Rest テンプレートは、リボンを使用したクライアント側の負荷分散に基づく必要があり、サービス名をホスト/ポートに解決するために Eureka サーバーをチェックする必要があることを理解しています。
の用途は何ですか@RibbonClient
。Eureka なしでネイティブのリボン クライアント LB をサポートし、構成時に Eureka Discover もサポートしDiscoveryEnabledNIWSServerList
ますか?
TL;DR :@LoadBalanced
マーカー注釈であり@RibbonClient
、構成目的で使用されます。
@LoadBalanced
注釈付きがサービスと対話するためにRestTemplate
を使用する必要があることを示すマーカー 注釈として使用されます。RibbonLoadBalancerClient
これにより、 に渡す URL に「論理識別子」を使用できるようになりますRestTemplate
。これらの論理識別子は通常、サービスの名前です。例えば:
restTemplate.getForObject("http://some-service-name/user/{id}", String.class, 1);
ここsome-service-name
で、論理識別子です。
@RibbonClient
リボン クライアントの構成に使用されます。
@RibbonClient は必須ですか?
いいえ!Service Discovery を使用していて、すべての既定のリボン設定に問題がない場合は、@RibbonClient
注釈を使用する必要さえありません。
いつ使用する必要があります@RibbonClient
か?
使用する必要があるケースが少なくとも 2 つあります。@RibbonClient
リボン設定のカスタマイズ:
定義する@RibbonClient
@RibbonClient(name = "some-service", configuration = SomeServiceConfig.class)
name
- リボンで呼び出しているサービスと同じ名前に設定しますが、リボンがそのサービスと対話する方法について追加のカスタマイズが必要です。configuration
-@Configuration
すべてのカスタマイズが として定義されたクラスに設定します@Beans
。このクラスが選択されていないことを確認してください。@ComponentScan
そうしないと、すべてのリボン クライアントの既定値が上書きされます。Spring Cloud Netflix ドキュメント(リンク)のセクション「RibbonClient のカスタマイズ」を参照してください。
Service Discovery なしでリボンを使用する
Service Discovery を使用していない場合、アノテーションのname
フィールドは、に渡す URL の「論理識別子」と同様に、構成のプレフィックスとして使用されます。@RibbonClient
application.properties
RestTemplate
定義する@RibbonClient
@RibbonClient(name = "myservice")
それからあなたのapplication.properties
myservice.ribbon.eureka.enabled=false
myservice.ribbon.listOfServers=http://localhost:5000, http://localhost:5001