Spring Cloud 微服务间RPC使用 应用名称 替代 host:port

最近解决了一个困扰很久的问题,这方面资料几乎没有,so记录下来。

使用Spring Cloud进行 微服务 开发,在微服务间进行远程调用时,为了更方便,同时也为了负载均衡,在 url 中使用 应用名称 替代 host:port这样的方式进行RPC;

1,在 spring cloud 的老版本中(比如 Angel.SR3), 是自动添加了RestTemplate这个Bean,只要在相应的类中自动装配 RestTemplate 这个 Bean:

@Autowired
RestTemplate restTemplate;

就可以直接使用getForObject方法进行RPC:

restTemplate.getForObject(String url, Class<String> responseType, Object... uriVariables))

2,而在比较新的版本中(比如 Camden.SR7), 是没有自动添加RestTemplate这个Bean的,需要手动添加(大坑1);并且还需要加上注解@LoadBalanced(超级大坑2,这里说超级大坑是因为没有资料提到这个注解, 在这里纠结了很久,解决的时候还是很开心的呢);

@LoadBalanced
@Bean
public RestTemplate rest() {
    return new RestTemplate();
}

之后的使用方法就跟第1条一样了。

你可能感兴趣的:(spring-cloud,Spring,Cloud,小手册)