私の目標は、2つのコンポーネント間のポイントツーポイント通信からeureka、ribbon、hystrixを使用した「本格的なnetflix」スタイルの通信に至るまでのさまざまなステップの戦略を作成することです。反復ごとに、実際のコードへの変更の量を制限しようとしながら、さらに追加したいと思います。これを実現するために、Feignは私の好みのクライアント側フレームワークです。最初のステップは、サーバーと通信するFeignClientを作成することです。
@FeignClient(url = "http://localhost:9000")
interface Client {
@RequestMapping(method = RequestMethod.GET, value = "/author/{author}/addedValue/{addedValue}")
Result addToTotal(@RequestParam(value="author") String author, @RequestParam(value="addedValue") long addedValue);
}
これは機能しますが、URLを注釈にハードコーディングしたくないです。私はこれを持ちたいです:@FeignClient()そして、次のようなプロパティ構造を持っています:client.url: http:// localhost:90
これまでのところ、その設定方法についての手がかりを見つけることができませんでした。また、スプリングクラウドソースで解決策を見つけることができませんでした。
できますか?どうやって?
「url」の代わりに「serviceId」を使用して実行できます。例えば。
@FeignClient("foo")
interface Client { ... }
そして
foo.ribbon.listOfServers: localhost:9000
例えば http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-ribbon-without-eureka をご覧ください。
これは次のように実行できます。
@FeignClient(name="fd-mobileapi-service",url="${fdmobile.ribbon.listOfServers}")
ここで、fdmobile.ribbon.listOfServers : value
はapplication.properties
のプロパティです。
私はそれをテストしましたが、動作しています。