需要建两个工程,一个是服务提供者,一个是服务调用者
服务提供者
一个普通的 nacos 服务,增加一个 controller 方法即可,上一篇文章刚说了,这里简单说下
<!-- 服务提供者不调用其他服务,所以只需要注册到 nacos 的依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
配置文件
server:
port: 8081
spring:
application:
name: my-provider-test
cloud:
nacos:
discovery:
server-addr: localhost:8848 # Nacos服务注册中心地址
代码
// 启动类
@EnableDiscoveryClient
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class,args);
}
}
// controller
@RestController
public class TestController {
@GetMapping("/test")
public String testGetConfig(){
return "test";
}
}
服务消费者
pom 依赖
<!-- 服务调用,底层需要 loadbalancer 做负载 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- 服务注册 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
配置文件
server:
port: 8082
spring:
application:
name: my-consumer-test
cloud:
nacos:
discovery:
server-addr: localhost:8848 # Nacos服务注册中心地址
代码
// 一个 Feign 接口,value 是服务名称
@FeignClient(value = "my-provider-test")
public interface TestFeign {
// 这个方法要和服务提供者那里保持一致
@GetMapping("/test")
String test();
}
// controller
@RestController
public class Controller {
@Resource
private TestFeign testFeign;
@GetMapping("/test")
public String testFeign(){
return testFeign.test();
}
}
// 启动类
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients // 开启 Feign
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
启动服务,nacos 能看到这俩服务
调用接口测试
生产中一般不会不是这样,通常服务提供者也是消费者,一般 controlle 继承 Feign 接口,@RequestMapping、@RequestBody 等这些注解也能继承,所以 Feign 中既定义了 Feign 也定义了接口,如果接入 swagger,swagger 以 controller 来构建 dock,这样代码就会清爽很多
标签:负载,调用,OpenFeign,spring,nacos,class,test,public,cloud From: https://www.cnblogs.com/cyrushuang/p/18297225