需求
因为微服务很多,在开发阶段,需要开发某一项目时,往往要启动很多关联项目,但是大多数关联项目都是已完成的,不希望在本地再次启动这些微服务,因为在测试环境中,已经有了启动的服务了(一下同意说远程服务),之前写了一个eureka的,感觉不太满意,这次换一个
思路
使用feign的出现的这个问题,虽然feign可以直接指定host,但是需要需改代码,不够便捷,所以决定直接修改Robbin的获取方式,有兴趣的同学可以看看源代码
代码
- 确定导入的包
<!--feign调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.netflix.servo/servo-core -->
<dependency>
<groupId>com.netflix.servo</groupId>
<artifactId>servo-core</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.netflix.netflix-commons/netflix-commons-util -->
<dependency>
<groupId>com.netflix.netflix-commons</groupId>
<artifactId>netflix-commons-util</artifactId>
</dependency>
-
修改com.netflix.loadbalancer.LoadBalancerContext
这个是已经修改后的,可以看到在去注册中心拉取之前先走了自己的方法,clientName是Feign上面的服务名,如果没有指定,才会注册中心获取
这个是相关的指定ip的工具类
结语
基本实现了我们的需要,有更好的方法请一定不吝赐教!0.0