此文接着上篇内容 spring-eureka-hello-world,代码仓库地址: https://github.com/weizhaowu-se/spring-eureka 分支: master-nacos
feignClient使用
上次通过客户端调用服务方时,采用的是restTemplate的方式,代码如下
@Autowired
RestTemplate restTemplate;
@RequestMapping(value = "/helloConsumer", method = GET)
public String helloConsumer() {
return restTemplate.getForEntity("http://SERVICE-HELLO/hello", String.class).getBody();
}
始终是有点丑陋,我们现在通过 FeignClient
的方式来进行RPC调用。
- 引入依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
-
在MainApplication配置注解 @EnableFeignClients
-
新建接口如下
@FeignClient(value = "SERVICE-HELLO")
public interface HelloService {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
String hello();
}
- 可以看到,类上面的FeignClient 对应的value为调用的服务名,而方法上的value则是对应具体的地址
- 在Controller中新增通过FeignClient调用的接口方法
@Autowired
HelloService helloService;
@RequestMapping(value = "/helloConsumerFeignClient", method = GET)
public String helloConsumerFeignClient() {
return helloService.hello();
}
- 重启应用,访问接口
http://localhost:8091/helloConsumerFeignClient
,访问成功
切换为nacos注册中心
上面我们使用的是eureka作为服务注册中心,现在我们修改为通过nacos实现服务注册与服务发现
- 启动本地nacos,参考地址
https://nacos.io/zh-cn/docs/quick-start.html
,启动命令为
sh startup.sh -m standalone
- 访问
http://localhost:8848/nacos
,账号密码 nacos/nacos
- 修改服务提供方
- 添加nacos依赖,注释eureka依赖
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>1.5.1.RELEASE</version>
</dependency>
<!--去除eureka依赖-->
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>-->
- 增加nacos服务器配置地址,去除eureka配置地址
#eureka.client.service-url.defaultZone=http://localhost:8080/eureka
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
- 重启应用,访问
http://localhost:8848/nacos
,可以看到对应的服务
- 添加nacos依赖,注释eureka依赖
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>1.5.1.RELEASE</version>
</dependency>
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>-->
- 增加nacos服务器配置地址,去除eureka配置地址
#eureka.client.service-url.defaultZone=http://localhost:8080/eureka
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
- 重启应用,访问接口
http://localhost:8091/helloConsumerFeignClient
或者http://localhost:8091/helloConsumer
- 至此,我们已经成功将eureka切换为nacos