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配置