单体升级为微服务
最后更新于:2022-04-02 07:10:01
# JeecgBoot 单体改为微服务
>[info] Version: 2.4+以上版本 | 20201201
*示例:将模块 system、demo ,快速切换成 SpringCloud微服务方式启动*
**目录:**
[TOC]
## 一、配置host
```
127.0.0.1 jeecg-boot-redis
127.0.0.1 jeecg-boot-mysql
127.0.0.1 jeecg-boot-rabbitmq
127.0.0.1 jeecg-boot-nacos
127.0.0.1 jeecg-boot-gateway
127.0.0.1 jeecg-boot-system
127.0.0.1 jeecg-boot-xxljob
```
## 二、放开微服务注释
修改 jeecg-boot根目录下的pom文件,将此处的注释打开

## 三、启动Nacos
* a. 创建nacos的数据库,需要执行 [Nacos脚本](https://gitee.com/jeecg/jeecg-boot/blob/master/jeecg-boot/db/tables_nacos.sql)

* b.启动nacos服务
找到项目 jeecg-cloud-module/jeecg-cloud-nacos,右键执行类com.alibaba.nacos.JeecgNacosApplication

* c.访问nacos地址
地址:http://127.0.0.1:8848/nacos(账号密码都是nacos)
默认所需配置已初始化好

经常需要改的配置在jeecg-dev.yaml,可以自己调整相关参数,也可以创建多个模式配置jeecg-{模式}.yaml。
## 四、启动jeecg-system服务
* 1.注释system项目的pom中demo的引入依赖
将 jeecg-boot-module-system/pom.xml 中的 demo 依赖注释掉 或者 删掉

* 2.修改打包配置
修改 jeecg-boot-module-system/pom.xml 文件中spring-boot-maven-plugin 打包插件configuration.skip=true

* 3. 启动system微服务 (jeecg-cloud-system-start)
找到jeecg-cloud-module/jeecg-cloud-system-start 下面的启动类 org.jeecg.JeecgSystemCloudApplication 右键运行启动。
## 五、启动jeecg-demo服务
升级某个模块为微服务模块, 这里以demo为例
* 1. 添加微服务启动依赖 `jeecg-boot-starter-cloud`
~~~
org.jeecgframework.boot
jeecg-boot-starter-cloud
~~~
* 2.添加配置文件application.yml `(可以忽略)`
如果没有则新建,内容如下:
~~~
server:
port: 7002
spring:
application:
name: jeecg-demo
~~~
* 3.在org.jeecg包下新建启动类`(如果没有)`
~~~
package org.jeecg;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableFeignClients
public class JeecgDemoApplication {
public static void main(String[] args) {
SpringApplication.run(JeecgDemoApplication.class, args);
}
}
~~~
上述步骤完成 即可启动 demo 微服务模块,前提nacos配置启动成功。
## 六、启动gateway
jeecg 路由加载支持三种模式:`yml本地配置` 、 `nacos配置` 、 `database数据库`,其中nacos和数据库方式支持动态刷新路由,默认用的是`database数据库`模式,详细路由配置 [参考此文档](http://doc.jeecg.com/2294757)。
启动类: org.jeecg.JeecgGatewayApplication
启动完成后nacos服务列表如下所示

查看在线接口文档: http://127.0.0.1:9999/doc.html

## 七、启动前端
前端项目找到环境配置文件.env.development
修改地址:`VUE_APP_API_BASE_URL=http://localhost:9999`
其中端口号 `9999`和`gateway`的端口保持一致
>[info] 注意: 微服务方式访问,对接的是gateway的地址,不再是system。

访问系统首页: http://localhost:3000

*****
## 八、高级应用
### rabbitmq服务启动
1、[安装rabbitmq](https://my.oschina.net/jeecg/blog/4729143)
2、修改nacos中jeecg-dev.yaml的rabbitmq链接配置

3、启动system,rabbitmq队列和交换机会自动生成
详细文档见[ rabitmq消息队列集成2.4+](http://doc.jeecg.com/2043897)
### xxljob服务启动
1. 手工执行脚本[ jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql](https://github.com/zhangdaiscott/jeecg-boot/blob/master/jeecg-boot/jeecg-cloud-module/jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql) 创建xxl_job库
2. xxljob服务启动,请右键执行` jeecg-cloud-xxljob/com.xxl.job.admin.XxlJobAdminApplication`
详细文档见[ xxl-job定时任务集成2.4+](http://doc.jeecg.com/2043895)
';