Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Problema no Service Discovery com Eureka url do fornecedor com restTemplate

Arthur, tudo bem?

Desculpa mas comentei no post anterior e não sabia comentar informações por aqui.

Estou com problema um problema quando chamado o POST: http://localhost:8080/compra

gera o erro abaixo:

{
    "timestamp": "2019-12-02T23:08:10.455+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "No instances available for fornecedor",
    "path": "/compra"
}
4 respostas

Segue o trecho com o erro na aplicação:

java.lang.IllegalStateException: No instances available for fornecedor
    at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:119) ~[spring-cloud-netflix-ribbon-2.1.1.RELEASE.jar:2.1.1.RELEASE]
    at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:99) ~[spring-cloud-netflix-ribbon-2.1.1.RELEASE.jar:2.1.1.RELEASE]
    at org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor.intercept(LoadBalancerInterceptor.java:58) ~[spring-cloud-commons-2.1.1.RELEASE.jar:2.1.1.RELEASE]
    at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:92) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:76) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:735) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:579) ~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at br.com.microservice.loja.service.CompraService.realizaCompra(CompraService.java:20) ~[classes/:na]
    at br.com.microservice.loja.controller.CompraController.realizaCompra(CompraController.java:21) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-
editar
solução!

Achei seu problema. Por termos trabalhado com Postman no curso inteiro, acabei não apresentando a interface gráfica do eureka. Isso provavelmente te facilitaria encontrar o problema. Suba o eureka, a loja e o fornecedor e acesse a url do eureka: http://localhost:8761/ Através dessa url, é possível ver que as aplicações estão se registrando com aspas: 'loja' e 'fornecedor'. Retire as aspas do application.properties da loja e do fornecedor e vai funcionar: spring.application.name='loja' -> loja spring.application.name='fornecedor' -> fornecedor

Arthur, boa noite!

Foi isso mesmo, as aspas simples estavam atrapalhando

retirei e deu certo, muitissimo obrigado pela ajuda.

Parabéns pelo curso, muito bom.

Valeu Huelton! Fico feliz por ter gostado. Boa sorte nos estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software