Я впервые пытаюсь использовать @FeignClient
в простом клиентском тестовом приложении REST. Я хочу использовать Ribbon для балансировки нагрузки между двумя экземплярами сервера, но не использовать 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
), поэтому я, очевидно, что-то здесь упустил.
Кто-нибудь может указать мне правильное направление?
Спасибо,
Роб.
@EnableFeignClients
сделает именно это за вас. - person Dave Syer   schedule 07.03.2016