spring cloud eureka问题:有3个微服务,1个eureka服务器,2个eureka客户端;
微服务A,B使用注释@EnableEurekaClient
;
微服务A有一个RESTful api“http://localhost:8080/hi”。 api返回“你好”。
现在,我打电话给api,使用网址“http://client/hi”,但它不起作用。
如何使用应用程序名称替换ip:关于spring cloud eureka的端口?
bootstrap.yml 内容:
spring:
application:
name: client
eureka:
client:
service-url:
defaultZone: http://${eureka.host:localhost}:${eureka.port:8761}/eureka/
答案 0 :(得分:0)
有很多方法可以做到这一点,这取决于您在代码中调用REST API的方式。
如果您使用RestTemplate
来调用API,则可以使用@LoadBalanced RestTemplate
在您想要调用REST API的代码中,请使用RestTemplate
定义@LoadBalanced
,如下所示。
@LoadBalanced
@Bean
RestTemplate restTemplate(){
return new RestTemplate();
}
当您调用API时,只需使用应用程序名称而不是host:port
,如下所示。
this.restTemplate.getForObject("http://client/hi", String.class)
如果您正在使用SpringCloud Feign,您可以定义接口以调用您的REST api,如下所示(无URL)
@FeignClient(name="client")
public interface ProductResource {
:
}
在弹簧启动应用程序中添加注释@EnableFeignClients
,如下所示。
@SpringBootApplication
@EnableFeignClients
: // other annotations you need.
public class YourAPIInvokerApplication {
在两种方式中,您都需要添加一些依赖项。