Quando tenho o Config-Server, externalizando as configs para o GitHub. O retorno que tenho é esse no log do Config Server: o.s.cloud.commons.util.InetUtils : Cannot determine local hostnameSegue o link: https://github.com/luisgustavoullmann/floricultura-config-server/blob/master/fornecedor/fornecedor.properties
application.properties do Config-Server
server.port=8888
#Buscando dentro de um repositorio do Github
spring.cloud.config.server.git.uri=https://github.com/luisgustavoullmann/floricultura-config-server
spring.cloud.config.server.git.uri.search-paths=fornecedor
bootstraop.properties do fornecedor
spring.application.name='fornecedor'
#Acessando CONFIG-SERVER
spring.profiles.active=default
#Qual port roda o CONFIG-SERVER
spring.cloud.config.uri=http://localhost:8888
application.properties do Fornecedor
# Port
server.port=8082
# Eureka
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
Retorno no endpointo no Postman:
{
"name": "fornecedor",
"profiles": [
"default"
],
"label": null,
"version": "29a3f2fb784ee7356f5052ce3da242502d547d32",
"state": null,
"propertySources": []
}
Quando tento consultar as instâncias do fornecedor na loja
@Service
public class CompraService {
//Discovery Client para ver quais instancias estão disponíveis no Eureka
@Autowired //DiscoveryClient do SpringFramework.Cloud
private DiscoveryClient eurekaClient;
@Autowired
private RestTemplate restTemplate;
public void realizaCompra(CompraDto compra) {
//null depois do GET, pois não envia informação nenhuma
//loja POST pedido, para fornecedor do endereco do cliente
ResponseEntity<InfoFornecedorDto> exchage =
restTemplate.exchange("http://fornecedor/info/" + compra.getEndereco().getEstado(), //endereco do cliente
HttpMethod.GET, null, InfoFornecedorDto.class);
eurekaClient.getInstances("fornecedor").stream()
.forEach(fornecedor -> {
System.out.println("localhost:"+fornecedor.getPort()); //imprime o localhost de todos os fornecedores disponíveis
});
System.out.println(exchage.getBody().getEndereco());
}
}
Esse é o retorno que tenho: java.lang.IllegalStateException: No instances available for fornecedor
Ou seja, não acha propertySources. O código está todo no Github se precisar ver.
O Eureka reconhece o microserviço:
c.n.e.registry.AbstractInstanceRegistry : Registered instance 'FORNECEDOR'/localhost:'fornecedor':8082 with status UP (replication=false)
Também reconhece a loja
Registered instance 'LOJA'/localhost:'loja':8081 with status UP (replication=false)
Porém, quando faço um POST no Postman com: http://localhost:8081/compra Body:
{
"itens":[
{
"id":1,
"quantidade":5
}
],
"endereco":{
"rua":"Rua da Maria",
"numero":123,
"estado":"SP"
}
}
Tenho como retorno:
{
"timestamp": "2020-06-27T14:14:43.974+0000",
"status": 500,
"error": "Internal Server Error",
"message": "No instances available for fornecedor",
"path": "/compra"
}
java.lang.IllegalStateException: No instances available for fornecedor
Alguém poderia me ajudar a solucionar essa questão?