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.