Olá, Ellen!
Esse erro:
java.lang.IllegalStateException: No instances available for catalog-service
significa que o client-service
não está conseguindo encontrar o catalog-service
no Eureka, mesmo que ele apareça no painel.
Nomes no Eureka devem bater
No código, certifique-se de que o nome do serviço está exatamente igual ao registrado no Eureka.
Por exemplo:
restTemplate.getForObject("http://CATALOG-SERVICE/produtos", Produto[].class)
Os nomes no Eureka são case-sensitive e devem ser maiúsculos por padrão (Spring converte para upper case).
. @LoadBalanced
está sendo usado corretamente?
Você precisa configurar o RestTemplate
com @LoadBalanced
, senão ele não resolve os nomes via Eureka.
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
. Espera do registro no Eureka
Às vezes o client-service
tenta chamar o catalog-service
antes que ele esteja 100% registrado no Eureka.
Solução:
- Adicione um pequeno
Thread.sleep
no client-service
(só para testes) ou - Use
@Scheduled
ou Retry
para fazer novas tentativas
Portas e context path
Verifique se o catalog-service
está rodando na porta correta e se há algum server.servlet.context-path
que precisa ser incluído na URL.