@FeignClient
単純な REST クライアント テスト アプリケーションで初めて使用しようとしています。2 つのサーバー インスタンス間の負荷分散にリボンを使用したいのですが、Eureka は使用しません。ドキュメントに従って、プロパティを使用して構成application.yml
し、 listOfServers
Eureka を無効にしました。私のクライアントは、プロパティの YAML プレフィックスと同じ名前で命名されていribbon
ます。
application.yml
:
ds:
ribbon:
listOfServers: server1:18201,server2:18201
クライアントコード:
@FeignClient("ds")
public interface DataServicesClient {
@RequestMapping(method = RequestMethod.GET, value = "/context-path/customers")
List<Customers> getCustomers();
}
listOfServers
アプリケーションを起動すると、リボンによってピックアップされていることがわかります。
2016-03-07 12:15:17.275 INFO 39948 --- [nio-8081-exec-1]
c.n.l.DynamicServerListLoadBalancer : DynamicServerListLoadBalancer for client ds
initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=ds,current list of
Servers=[server1:18201, server2:18201]
ただし、クライアントはサーバー接頭辞なしでアノテーションの値のみを使用して呼び出しを行い@RequestMapping
、明らかに失敗します。
2016-03-07 12:15:21.394 ERROR 39948 --- [nio-8081-exec-1] o.a.c.c.C.[.[.[/].
[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context
with path [] threw exception [Request processing failed; nested exception is
feign.RetryableException: Unexpected end of file from server executing GET
http://context-path/customers] with root cause
java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
各サーバーに順番に注入することを期待していたhttp:{server instance}/context-path/customers
ので ( )、明らかにここで何かを見逃しています。
誰でも私を正しい方向に向けることができますか?
ありがとう、
ロブ。