问题背景说明
之前在工作中写了一个定时任务,其中需要调用另一个模块的数据,于是我使用RestTemplate的方式进行调用,我在配置文件中配置了那个模块的地址(使用的是注册中心中的微服务名),并通过@Value的方式注入到使用的地方。本来没啥问题的,可是同事他在记录日志的时候,正好使用的也是那一个模块,他也是将那个模块的地址写在配置文件中,但是是使用的ip的形式,正好,他看见我这样写,就模仿我也使用微服务名来调用,他发现怎么也调用不成功,于是就改成了在代码中直接new一个RestTemplate的方式,但是配置文件中的url地址给我改成了使用ip的形式。今天我测试功能的时候发现我这个定时任务一直跑不起来,一看报错,说没有这个负载均衡实例。经过一段时间的思考与发现,看见配置文件中的配置给我改掉了,也就是原本是微服务名,给我改成了ip。于是报错,后来自己的思考,发现加了@LoadBalanced注解不能使用ip来调用。于是找到问题原因,后面就很容易解决掉了。
@LoadBalanced注解说明
在开发微服务应用的时候,难免会进行服务间的相互调用。一般我们会使用RestTemplate来进行远程调用。但是在将RestTemplate放入Spring容器的时候需要注意一个问题,如下
@Configuration
public class ApplicationContextConfig {