本课程开发软件与项目初始代码可以通过云盘下载,答疑服务可以关注视频片头的二维码获取。
https://www.123912.com/s/A75eVv-27mod,提取码:yton
教学视频
目前我们已经有了Provider项目,这节课我们把Consumer项目创建出来。Consumer项目也就是BFF项目,它也是一个SpringMVC项目。由于创建项目的步骤比较繁琐,大家收看视频不要快进,否则将来要花十倍时间调试。
一、创建hxoa-mis项目
在hxoa-cloud根节点项目中,新建名为hxoa-mis的模块。

在下面的面板中不需要勾选任何依赖库,直接把项目创建出来即可。

项目创建出来之后,依旧需要我们删除一些文件与文件夹。

二、添加依赖库
覆盖该项目的pom.xml文件,在里面添加上必要的依赖库,例如Seata、RabbitMQ、SaToken这样的依赖库。
<?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>com.example</groupId>
<artifactId>hxoa-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.example</groupId>
<artifactId>hxoa-mis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hxoa-mis</name>
<description>hxoa-mis</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>23</java.version>
</properties>
<dependencies>
<!--依赖公共模块-->
<dependency>
<groupId>com.example</groupId>
<artifactId>hxoa-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--SaToken-->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot3-starter</artifactId>
<version>1.37.0</version>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-redis</artifactId>
<version>1.37.0</version>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-aop</artifactId>
<version>1.37.0</version>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-alone-redis</artifactId>
<version>1.37.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.11.1</version>
</dependency>
<!--Seata-->
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>3.3.5</version>
</dependency>
<!--Freemarker-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
<version>3.3.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
接下来要把该项目注册到根节点项目,在根节点项目的pom.xml文件中,找到<modules>标签填上内容。
<modules>
<module>hxoa-common</module>
<module>hxoa-oms</module>
<module>hxoa-mis</module>
</modules>
三、定义配置信息
在hxoa命名空间中,新建<font style="color:rgb(51, 51, 51);">hxoa-mis-dev.yaml</font>配置,内容如下:
server:
port: 5011
spring:
servlet:
multipart:
#允许上传文件
enabled: true
#每个文件最大不能超过20M
max-file-size: 20MB
#HTTP请求不能超过20M
max-request-size: 50MB
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
freemarker:
template-loader-path: classpath:/templates/
redisson:
url: redis://localhost:6379
password: 你的redis密码
database: 0
minIdleSize: 10
poolSize: 100
idleConnectionTimeout: 10000
connectTimeout: 10000
dubbo:
application:
name: hxoa-mis
serialize-check-status: WARN
qos-port: 5012
#关闭Dubbo本地缓存,避免负载均衡时候本地运行多个相同服务出现异常
enable-file-cache: false
reference:
check: false
registry:
#把服务注册到Nacos上面
address: nacos://localhost:8848
timeout: 50000
username: nacos
password: 你的Nacos密码
parameters:
namespace: 你的命名空间ID
protocol:
name: dubbo
port: 5013
scan:
base-packages: com.example.hxoa.cloud.dubbo
consumer:
filter: DubboExceptionFilter,-exception
timeout: 10000
sa-token:
#HTTP请求头中哪个属性用来上传令牌
token-name: token
#过期时间(秒),设置为30天
timeout: 2592000
#临时有效期,设置为3天
active-timeout: 259200
#不允许相同账号同时在线,新登陆的账号会挤掉原来登陆的账号
allow-concurrent-login: true
#在登陆相同账号的时候,是否使用相同的Token
is-share: false
token-style: uuid
#是否读取Cookie中的令牌
isReadCookie: false
#同端互斥
isConcurrent: true
#SaToken缓存令牌用其他的逻辑库,避免业务数据和令牌数据共用相同的Redis逻辑库
alone-redis:
database: 1
host: localhost
port: 6379
password: 你的Redis密码
timeout: 10s
lettuce:
pool:
#连接池中的最小空闲连接
min-idle: 4
#连接池中的最大空闲连接
max-idle: 8
#连接池最大连接数
max-active: 200
#连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10s
minio:
endpoint: http://localhost:9000
access-key: 你的Minio用户名
secret-key: 你的Minio密码
bucket: hxoa
seata:
#当前应用的别名
application-id: hxoa-mis
#事务组名称
tx-service-group: hxoa-cloud_group
service:
#是否开启服务降级
enable-degrade: false
vgroupMapping:
#事务组关联哪个TC
hxoa-cloud_group: hxoa-cloud_tc
grouplist:
#配置TC
hxoa-cloud_tc: localhost:8091
data-source-proxy-mode: AT
logging:
level:
#SpringBoot日志级别
root: info
pattern:
console: "%d{HH:mm:ss} %-5level %msg%n"
wx:
pay:
appId: 课程提供的APPID
mchId: 课程提供的商户号
api-v3-key: 课程提供的秘钥
keyPath: classpath:apiclient_cert.p12
privateCertPath: classpath:apiclient_cert.pem
privateKeyPath: classpath:apiclient_key.pem
domain: http://s0.nsloop.com:123456
必须把hxoa-mis子系统中application.properties文件删掉,然后创建bootstrap.yml文件。
nacos:
url: localhost:8848
namespace: 你的命名空间ID
username: nacos
password: 你的Nacos密码
group: DEFAULT_GROUP
prefix: ${spring.application.name}
sentinel:
dashboard: localhost:8718
port: 8719
spring:
application:
name: hxoa-mis
cloud:
inetutils:
#设置当前项目注册到Nacos上面的IP地址
preferred-networks: localhost
nacos:
discovery:
server-addr: ${nacos.url}
namespace: ${nacos.namespace}
username: ${nacos.username}
password: ${nacos.password}
config:
server-addr: ${nacos.url}
username: ${nacos.username}
password: ${nacos.password}
file-extension: yaml
refresh-enabled: true
namespace: ${nacos.namespace}
group: ${nacos.group}
prefix: ${nacos.prefix}
sentinel:
web-context-unify: false
transport:
port: ${sentinel.port}
dashboard: ${sentinel.dashboard}
datasource:
#读取Nacos上面的限流规则
flow-rule:
nacos:
data-id: ${spring.application.name}_flow.json
server-addr: ${nacos.url}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
group-id: ${nacos.group}
#指定文件配置的是哪种规则 flow是流控,degrade是熔断,param-flow是热点参数
rule-type: flow
#读取Nacos上面的熔断规则
degrade-rule:
nacos:
data-id: ${spring.application.name}_degrade.json
server-addr: ${nacos.url}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
group-id: ${nacos.group}
rule-type: degrade
#读取Nacos上面的热点参数限流规则
param-rule:
nacos:
data-id: ${spring.application.name}_param.json
server-addr: ${nacos.url}
username: ${nacos.username}
password: ${nacos.password}
namespace: ${nacos.namespace}
group-id: ${nacos.group}
rule-type: param-flow
profiles:
active: dev
1679



被折叠的 条评论
为什么被折叠?



