Как вызвать внешний не REST API из облачного микросервиса Spring, который использует eureka для вызова другого внутреннего микросервиса?

В нашем проекте мы используем Spring Cloud + Eureka в качестве реестра сервисов. Когда мы используем ленточный клиент для вызова внутренних микросервисов, все URL-адреса разрешаются через Eureka ... это проблема с вызовом внешних URL-адресов. Поскольку внешний API устарел, использование Feign не кажется хорошим выбором.

Как лучше всего вызвать внешний URL-адрес из такой службы?

заранее спасибо

Патрис


person Patrice Conil    schedule 20.01.2017    source источник


Ответы (2)


Односторонняя работа: используйте две конфигурации.

Объявите свой RestTemplate Bean для вызова внешних служб следующим образом:

@Primary
@Qualifier("withoutEureka")
@Bean
public RestTemplate restTemplate(){
...
}

Вставьте эту ссылку в свой клиент таким образом

@Bean
public MyClientForExtCall myClientForExtCall(@Qualifier("withoutEureka")RestTemplate restTemplate)

В другой конфигурации используйте restTemplate как обычно, но не забудьте использовать другой квалификатор

@LoadBalanced
@Bean
@Qualifier("withEureka")
public RestTemplate loadBalancedEureka(){
...
}

@Bean
public MyClientForInternal myClientForInternal(@Qualifier("withoutEureka")RestTemplate restTemplate)

Патрис

person Patrice Conil    schedule 20.01.2017

Вы можете использовать Ribbon без Eureka. Для внешних API-интерфейсов, которые нельзя настроить в Eureka, чтобы абстрагироваться от обнаружения. Вы можете жестко закодировать их URL-адреса в клиенте и настроить список серверов. По умолчанию клиент ленты настроен на список настроенных серверов, и вы можете предоставить такую ​​конфигурацию:

stores:
  ribbon:
    listOfServers: example.com, google.com
person madhu pathy    schedule 04.12.2017