一:创建项目
1. 创建maven项目,删除除pom.xml的其余文件,引入所使用pom依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.7</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dk</groupId>
<artifactId>OpenFeignLineNacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>nacos</module>
<module>openfeign</module>
</modules>
<properties>
<java.version>17</java.version>
<sentinel.version>1.8.8</sentinel.version>
<bootstrap.version>3.1.4</bootstrap.version>
<nacos.version>2.4.3</nacos.version>
<openfeign.version>4.0.4</openfeign.version>
<spring-cloud-alibaba-nacos>2023.0.1.2</spring-cloud-alibaba-nacos>
<lombok.version>1.18.28</lombok.version>
<loadbalancer.version>4.0.3</loadbalancer.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2023.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 统一管理jar包版本 -->
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-loadbalancer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
<version>${loadbalancer.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${openfeign.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-aspectj</artifactId>
<version>${sentinel.version}</version>
</dependency>
<!-- sentinel客户端与dashboard通信依赖 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>${sentinel.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2023.0.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>${sentinel.version}</version>
</dependency>
<!--开启Spring Cloud 应用程序启动时加载bootstrap配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>${bootstrap.version}</version>
</dependency>
<!-- Spring Cloud Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba-nacos}</version>
</dependency>
<!-- Spring Cloud Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba-nacos}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
二:创建nacos项目、添加依赖、添加测试url
1. pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>OpenFeignLineNacos</artifactId>
<groupId>com.dk</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>nacos</artifactId>
<dependencies>
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba-nacos}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba-nacos}</version>
</dependency>
<!--SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
2. 添加application.yml文件:
server:
port: 8100
config: #配置中心
#nacos版本2.4.3 springboot版本3.3.6 nacos更新后如果跟之前似的不在配置中定义server.config @Value("${server.config}") private String serverConfig;
#那么就会报错,说找不到你的serber.config,也就是说想要用nacos的配置中心,必须在配置中进行初始化
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
#如果同时指定了namespace和group,那么就会先走namespace下的group下的配置
sentinel:
transport:
dashboard: localhost:8889
port: 8719
3. 添加controller:
@RestController
public class TestController {
@RequestMapping("/findOpen/{id}")
public String findOpen(@PathVariable("id") Integer id){
System.err.println(id);
return "输入的ID为:::"+id;
}
4. 启动类添加@EnableDiscoveryClient注解
@SpringBootApplication
@EnableDiscoveryClient
public class NacosApplication {
public static void main(String[] args) {
SpringApplication.run(NacosApplication.class, args);
}
}
这时nacos模块就完成了,启动改模块就可以在nacos中的服务列表看到你的信息了,例如:
三: 创建Openfeign模块、添加依赖,调用nacos模块的url
1. 调整pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>OpenFeignLineNacos</artifactId>
<groupId>com.dk</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>openfeign</artifactId>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-loadbalancer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
<version>4.0.3</version>
</dependency>
<dependency> // 记得引用你的nacos模块
<groupId>com.dk</groupId>
<artifactId>nacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${openfeign.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2023.0.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba-nacos}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba-nacos}</version>
</dependency>
<!--SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
2. 添加yml配置文件信息
server:
port: 8101
spring:
application:
name: openFen-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
sentinel:
transport:
#配置Sentinel dashboard地址
dashboard: localhost:8889
#默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
port: 8719
#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
# 激活Sentinel对Feign的支持
feign:
sentinel:
enabled: true
3. 添加调用nacos接口的配置
@FeignClient(value = "nacos-payment-provider")//记得与你的nacos的服务名称一致
public interface OpenFeign {
@GetMapping("/findOpen/{id}")//你nacos中存在的url
String getId(@PathVariable("id")Integer id);
}
4. 添加其他业务以及实现类
public interface TestService {
String getId(Integer id);
}
@Service
public class TestServiceImpl implements TestService{
@Autowired
private OpenFeign openFeign;
@Override
public String getId(Integer id) {
return openFeign.getId(id);
}
}
5. 添加openfeign的控制器
@RestController
public class TestController {
@Autowired
private TestService testService;
@RequestMapping("/aaa/{id}") // 接收前端传过来的参数 注意接口的大小写问题,首字母尽量小写,容易503
// 注意接收的参数类型,必须和前端传过来的参数类型一致
public String getId(@PathVariable("id") Integer id) {
return testService.getId(id);
}
}
6. 启动类添加openfeign注解
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OpenfeignApplication {
public static void main(String[] args) {
SpringApplication.run(OpenfeignApplication.class, args);
}
}
四: 测试
至此完毕,开始测试,测试需要你调用openfeign的aaa接口,是否能转到nacos的定义接口,如果可以就代表成功,例如:
五: 所需中间件
1. nacos使用的是2.4.3版本的
注:记得修改启动的start.cmd文件,默认是集群模式的,改成单机启动 standalone
2. sentinel使用的是1.8.8版本的
通过网盘分享的文件:网盘分享
链接: https://pan.baidu.com/s/1_mDxhtSZRCIVXZMDojpk_Q
提取码: ak47
注:启动命令:java -jar sentinel.jar --server.port=****你的端口,记得跟openfeign的一至,默认是8080端口,这边那个端口,openfeign的yml就指定那个端口
只是简易模式,直接在windows系统操作的。