NACOS+Feign实现微服务调用
因最近接触到新的项目,发现好多知识自己并没有接触过,因此自己创建一番,学习一下。
NACOS
我们常用且熟悉的配置中心基本是zookeeper等,nacos简而言之也是一个配置中心,同时提供服务发现、服务管理的功能。
Feign
feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service,我们可以直接使用其服务。
springCloud+nacos+feign实现微服务调用
-
首先准备两个服务,一个provide、一个consumer。
相关依赖版本
<spring-boot.version>2.2.8.RELEASE</spring-boot.version> <spring-cloud.version>2.2.2.RELEASE</spring-cloud.version> <spring-nacos.version>2.2.1.RELEASE</spring-nacos.version>
- consumer配置
spring: application: name: nacos-cloud-provide cloud: nacos: discovery: server-addr: 127.0.0.1:8848
启动类需添加@EnableDiscoveryClient
、@EnableFeignClients
注解。
定义feign接口:
@FeignClient(value = "nacos-cloud-provide",url = "127.0.0.1:8081") public interface FeignNacosCloudProvide { /** * get * @return */ @GetMapping(value = "/service") public String get(); }
实现类:
`
@Slf4j
@RestController
public class FeignNacosCloudProvideImpl implements FeignNacosCloudProvide {
@Override
public String get() {
log.info("--------进入生产者方法体--------");
return "hahahaha";
}
}
`-
provide配置
server.port=8082 spring.application.name=nacos-cloud-consumer spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
启动类增加注解
@EnableDiscoveryClient
,@EnableFeignClients(basePackages = "com.example.nacoscloudprovide.client")
。basePackages指定调用的feign接口包名。
service层直接调用:
`
@Service
@Slf4j
public class FeignNacosServiceImpl implements FeignNacosService {@Autowired private FeignNacosCloudProvide feignNacosCloudProvide; @Override public String getOne(String one) { log.info("------开始调用生产者服务------"+one); return feignNacosCloudProvide.get(); }
}
`
- consumer配置