本文目录
一、背景描述
二、配置方法
2.1 添加maven依赖
2.2 启动类上添加@EnableFeignClients注解
2.3 配置文件application-local.yml中添加路径
2.4 微服务A中添加微服务B的接口
2.5 调用此接口
在最近做的项目中,由于之前做的各个服务都是相互独立的,但是业务要求调用其他已做好的服务的功能,于是就有了正在做的项目调用已经上线的服务的需求。
一、背景描述
新开发的大脑管理平台(微服务A),由于需要调用控制引擎中心(微服务B)的接口,也就是服务A写个接口调用服务B,不需要做任务业务逻辑,即透传给服务B,服务B的接口为机器人测试对话聊天功能。由于这两个是独立的服务,相互之前没有关联性,所以会牵出一个问题?这服务A怎么调用服务B。
微服务A、微服务B,两个服务的项目结构如下:
二、配置方法
2.1 添加maven依赖
对于spring boot 2.0.0版本以上的,引用openfeign
<!--引入feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
在infrasture 目录中的 pom.xml 文件中添加 对微服务B的引用
<!-- 控制引擎服务 -->
<dependency>
<groupId>com.iot</groupId>
<artifactId>back-control-engine-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2.2 启动类上添加@EnableFeignClients注解
在服务A的启动类上添加@EnableFeignClients注解,使得该服务支持FeignClients功能。
@Slf4j
@SpringBootApplication(scanBasePackages = {"com.iot"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.iot")
@MapperScan("com.iot.back.brain.platform.tunnel.database")
public class MainServer implements ApplicationRunner {
public static void main(String[] args) {
try {
SpringApplication.run(MainServer.class, args);
} catch (Exception e) {
log.error("大脑管理平台项目启动失败!报错原因 ============== ", e);
}
}
@Override
public void run(ApplicationArguments args) throws Exception {
log.info("恭喜你,大脑管理平台成功启动啦...");
}
}
2.3 配置文件application-local.yml中添加路径
配置文件中添加如下配置,然后在类中通过 @FeignClient 注解获取
以下是 application-local.yml 配置文件中的配置内容(application-dev.yml、application-chk.yml、application-prod.yml 文件中也需要配置上):
##################### 其他微服务 #####################
feign:
services:
controlEngine: back-control-engine #控制引擎服务
2.4 微服务A中添加微服务B的接口
建一个包用于存放 feign 接口,放哪个目录下,没有强制规定
2.5 调用此接口
把这个接口当成本项目中的一个接口类正常注入调用即可。如图所示:
拓展:另外一种调用方式也可供参考
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法
完结!