From 1b16eaa3611d02957ae5234aaf545a2d0de255bd Mon Sep 17 00:00:00 2001 From: zhangdaiscott <zhangdaiscott@163.com> Date: Sat, 6 Aug 2022 15:29:02 +0800 Subject: [PATCH] 拆分jeecg-boot-starter出来,使用独立项目维护 --- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-dev.yaml | 212 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-gateway-router.json | 60 ------------------------------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg.yaml | 119 ----------------------------------------------------------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/pom.xml | 59 ----------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java | 195 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/GwCorsFilter.java | 31 ------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/PersonBeanConfiguration.java | 24 ------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/IJeecgFeignService.java | 6 ------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/impl/JeecgFeignService.java | 60 ------------------------------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/handler/CustomSentinelExceptionHandler.java | 55 ------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java | 31 ------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/resources/bootstrap.yml | 59 ----------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/pom.xml | 21 --------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java | 228 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/annotation/EnableXxlJob.java | 18 ------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/config/XxlJobConfiguration.java | 48 ------------------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/prop/XxlJobProperties.java | 35 ----------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/resources/META-INF/spring.factories | 2 -- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/pom.xml | 41 ----------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JLock.java | 57 --------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JRepeat.java | 36 ------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/LockConstant.java | 72 ------------------------------------------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/BaseAspect.java | 67 ------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/DistributedLockHandler.java | 167 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/RepeatSubmitAspect.java | 81 --------------------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/client/RedissonLockClient.java | 126 ------------------------------------------------------------------------------------------------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/config/RedissonConfiguration.java | 36 ------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/RedissonManager.java | 100 ---------------------------------------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/RedissonConfigStrategy.java | 21 --------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java | 43 ------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java | 54 ------------------------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java | 47 ----------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java | 40 ---------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/GlobalConstant.java | 17 ----------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/LockModel.java | 22 ---------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/RedisConnectionType.java | 39 --------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/prop/RedissonProperties.java | 39 --------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/resources/META-INF/spring.factories | 4 ---- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockService.java | 59 ----------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTest.java | 67 ------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTestApplication.java | 15 --------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/TestUser.java | 9 --------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/resources/application.yml | 19 ------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/pom.xml | 21 --------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/client/RabbitMqClient.java | 359 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/config/RabbitMqConfig.java | 67 ------------------------------------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java | 40 ---------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/MapMessageConverter.java | 39 --------------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/BaseApplicationEvent.java | 28 ---------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/EventObj.java | 21 --------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgBusEventHandler.java | 8 -------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgRemoteApplicationEvent.java | 29 ----------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java | 33 --------------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/listenter/MqListener.java | 10 ---------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-seata/pom.xml | 27 --------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/pom.xml | 28 ---------------------------- jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/java/org/jeecg/boot/shardingsphere/config/DataSourceConfiguration.java | 78 ------------------------------------------------------------------------------ jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/resources/application.yml | 3 --- jeecg-boot/jeecg-boot-starter/pom.xml | 57 --------------------------------------------------------- 59 files changed, 0 insertions(+), 3389 deletions(-) delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-dev.yaml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-gateway-router.json delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg.yaml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/pom.xml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/GwCorsFilter.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/PersonBeanConfiguration.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/IJeecgFeignService.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/impl/JeecgFeignService.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/handler/CustomSentinelExceptionHandler.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/resources/bootstrap.yml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/pom.xml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/annotation/EnableXxlJob.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/config/XxlJobConfiguration.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/prop/XxlJobProperties.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/resources/META-INF/spring.factories delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/pom.xml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JLock.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JRepeat.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/LockConstant.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/BaseAspect.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/DistributedLockHandler.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/RepeatSubmitAspect.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/client/RedissonLockClient.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/config/RedissonConfiguration.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/RedissonManager.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/RedissonConfigStrategy.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/GlobalConstant.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/LockModel.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/RedisConnectionType.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/prop/RedissonProperties.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/resources/META-INF/spring.factories delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockService.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTest.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTestApplication.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/TestUser.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/resources/application.yml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/pom.xml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/client/RabbitMqClient.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/config/RabbitMqConfig.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/MapMessageConverter.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/BaseApplicationEvent.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/EventObj.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgBusEventHandler.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgRemoteApplicationEvent.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/listenter/MqListener.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-seata/pom.xml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/pom.xml delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/java/org/jeecg/boot/shardingsphere/config/DataSourceConfiguration.java delete mode 100644 jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/resources/application.yml delete mode 100644 jeecg-boot/jeecg-boot-starter/pom.xml diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-dev.yaml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-dev.yaml deleted file mode 100644 index 0cf4817..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-dev.yaml +++ /dev/null @@ -1,212 +0,0 @@ -spring: - datasource: - druid: - stat-view-servlet: - enabled: true - loginUsername: admin - loginPassword: 123456 - allow: - web-stat-filter: - enabled: true - dynamic: - druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置) - # 连接池的配置信息 - # 初始化大小,最小,最大 - initial-size: 5 - min-idle: 5 - maxActive: 20 - # 配置获取连接等待超时的时间 - maxWait: 60000 - # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 - timeBetweenEvictionRunsMillis: 60000 - # 配置一个连接在池中最小生存的时间,单位是毫秒 - minEvictableIdleTimeMillis: 300000 - validationQuery: SELECT 1 FROM DUAL - testWhileIdle: true - testOnBorrow: false - testOnReturn: false - # 打开PSCache,并且指定每个连接上PSCache的大小 - poolPreparedStatements: true - maxPoolPreparedStatementPerConnectionSize: 20 - # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 - filters: stat,wall,slf4j - # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 - connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 - - datasource: - master: - url: jdbc:mysql://${MYSQL-HOST:jeecg-boot-mysql}:${MYSQL-PORT:3306}/${MYSQL-DB:jeecg-boot}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai - username: ${MYSQL-USER:root} - password: ${MYSQL-PWD:root} - driver-class-name: com.mysql.cj.jdbc.Driver - # 多数据源配置 - #multi-datasource1: - #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai - #username: root - #password: root - #driver-class-name: com.mysql.cj.jdbc.Driver - #redis 配置 - redis: - database: 0 - host: jeecg-boot-redis - lettuce: - pool: - max-active: 8 #最大连接数据库连接数,设 0 为没有限制 - max-idle: 8 #最大等待连接中的数量,设 0 为没有限制 - max-wait: -1ms #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 - min-idle: 0 #最小等待连接中的数量,设 0 为没有限制 - shutdown-timeout: 100ms - password: - port: 6379 - #rabbitmq配置 - rabbitmq: - host: jeecg-boot-rabbitmq - username: guest - password: guest - port: 5672 - publisher-confirms: true - publisher-returns: true - virtual-host: / - listener: - simple: - acknowledge-mode: manual - #消费者的最小数量 - concurrency: 1 - #消费者的最大数量 - max-concurrency: 1 - #是否支持重试 - retry: - enabled: true -#minidao -minidao : - base-package: org.jeecg.modules.jmreport.* -#jeecg专用配置 -jeecg : - # 本地:local\Minio:minio\阿里云:alioss - uploadType: local - path : - #文件上传根目录 设置 - upload: D://opt//upFiles - #webapp文件路径 - webapp: D://opt//webapp - shiro: - excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/map/**,/jmreport/bigscreen2/** - #阿里云oss存储配置 - oss: - endpoint: oss-cn-beijing.aliyuncs.com - accessKey: ?? - secretKey: ?? - bucketName: jeecgdev - staticDomain: ?? - # ElasticSearch 6设置 - elasticsearch: - cluster-name: jeecg-ES - cluster-nodes: 127.0.0.1:9200 - check-enabled: false - # 表单设计器配置 - desform: - # 主题颜色(仅支持 16进制颜色代码) - theme-color: "#1890ff" - # 文件、图片上传方式,可选项:qiniu(七牛云)、system(跟随系统配置) - upload-type: system - map: - # 配置百度地图的AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home - baidu: ?? - # 在线预览文件服务器地址配置 - file-view-domain: 127.0.0.1:8012 - # minio文件上传 - minio: - minio_url: http://minio.jeecg.com - minio_name: ?? - minio_pass: ?? - bucketName: otatest - #大屏报表参数设置 - jmreport: - mode: dev - #是否需要校验token - is_verify_token: false - #必须校验方法 - verify_methods: remove,delete,save,add,update - #Wps在线文档 - wps: - domain: https://wwo.wps.cn/office/ - appid: ?? - appsecret: ?? - #xxl-job配置 - xxljob: - enabled: false - adminAddresses: http://jeecg-boot-xxljob:9080/xxl-job-admin - appname: ${spring.application.name} - accessToken: '' - logPath: logs/jeecg/job/jobhandler/ - logRetentionDays: 30 - #自定义路由配置 yml nacos database - route: - config: - data-id: jeecg-gateway-router - group: DEFAULT_GROUP - data-type: yml - #分布式锁配置 - redisson: - address: jeecg-boot-redis:6379 - password: - type: STANDALONE - enabled: true -#Mybatis输出sql日志 -logging: - level: - org.jeecg.modules.system.mapper : info -#cas单点登录 -cas: - prefixUrl: http://localhost:8888/cas -#swagger -knife4j: - production: false - basic: - enable: true - username: jeecg - password: jeecg1314 - -#第三方登录 -justauth: - enabled: true - type: - GITHUB: - client-id: ?? - client-secret: ?? - redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/github/callback - WECHAT_ENTERPRISE: - client-id: ?? - client-secret: ?? - redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/wechat_enterprise/callback - agent-id: 1000002 - DINGTALK: - client-id: ?? - client-secret: ?? - redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/dingtalk/callback - cache: - type: default - prefix: 'demo::' - timeout: 1h -#第三方APP对接 -third-app: - enabled: false - type: - #企业微信 - WECHAT_ENTERPRISE: - enabled: false - #CORP_ID - client-id: ?? - #SECRET - client-secret: ?? - agent-id: ?? - #自建应用秘钥(新版企微需要配置) - # agent-app-secret: ?? - #钉钉 - DINGTALK: - enabled: false - # appKey - client-id: ?? - # appSecret - client-secret: ?? - agent-id: ?? diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-gateway-router.json b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-gateway-router.json deleted file mode 100644 index a9120ce..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-gateway-router.json +++ /dev/null @@ -1,60 +0,0 @@ -[{ - "id": "jeecg-system", - "order": 0, - "predicates": [{ - "name": "Path", - "args": { - "_genkey_0": "/sys/**", - "_genkey_1": "/eoa/**", - "_genkey_2": "/joa/**", - "_genkey_3": "/jmreport/**", - "_genkey_4": "/bigscreen/**", - "_genkey_5": "/desform/**", - "_genkey_6": "/online/**", - "_genkey_8": "/act/**", - "_genkey_9": "/plug-in/**", - "_genkey_10": "/generic/**", - "_genkey_11": "/v1/**" - } - }], - "filters": [], - "uri": "lb://jeecg-system" -}, { - "id": "jeecg-demo", - "order": 1, - "predicates": [{ - "name": "Path", - "args": { - "_genkey_0": "/mock/**", - "_genkey_1": "/test/**", - "_genkey_2": "/bigscreen/template1/**", - "_genkey_3": "/bigscreen/template2/**" - } - }], - "filters": [], - "uri": "lb://jeecg-demo" -}, { - "id": "jeecg-system-websocket", - "order": 2, - "predicates": [{ - "name": "Path", - "args": { - "_genkey_0": "/websocket/**", - "_genkey_1": "/eoaSocket/**", - "_genkey_2": "/newsWebsocket/**" - } - }], - "filters": [], - "uri": "lb:ws://jeecg-system" -}, { - "id": "jeecg-demo-websocket", - "order": 3, - "predicates": [{ - "name": "Path", - "args": { - "_genkey_0": "/vxeSocket/**" - } - }], - "filters": [], - "uri": "lb:ws://jeecg-demo" -}] \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg.yaml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg.yaml deleted file mode 100644 index 99ab1cc..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg.yaml +++ /dev/null @@ -1,119 +0,0 @@ -server: - tomcat: - max-swallow-size: -1 - error: - include-exception: true - include-stacktrace: ALWAYS - include-message: ALWAYS - compression: - enabled: true - min-response-size: 1024 - mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/* -management: - health: - mail: - enabled: false - endpoints: - web: - exposure: - include: "*" #暴露所有节点 - health: - sensitive: true #关闭过滤敏感信息 - endpoint: - health: - show-details: ALWAYS #显示详细信息 -spring: - servlet: - multipart: - max-file-size: 10MB - max-request-size: 10MB - mail: - host: smtp.163.com - username: jeecgos@163.com - password: ?? - properties: - mail: - smtp: - auth: true - starttls: - enable: true - required: true - ## quartz定时任务,采用数据库方式 - quartz: - job-store-type: jdbc - initialize-schema: embedded - #设置自动启动,默认为 true - auto-startup: true - #延迟1秒启动定时任务 - startup-delay: 1s - #启动时更新己存在的Job - overwrite-existing-jobs: true - properties: - org: - quartz: - scheduler: - instanceName: MyScheduler - instanceId: AUTO - jobStore: - class: org.quartz.impl.jdbcjobstore.JobStoreTX - driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate - tablePrefix: QRTZ_ - isClustered: true - misfireThreshold: 60000 - clusterCheckinInterval: 10000 - threadPool: - class: org.quartz.simpl.SimpleThreadPool - threadCount: 10 - threadPriority: 5 - threadsInheritContextClassLoaderOfInitializingThread: true - #json 时间戳统一转换 - jackson: - date-format: yyyy-MM-dd HH:mm:ss - time-zone: GMT+8 - aop: - proxy-target-class: true - activiti: - check-process-definitions: false - #启用作业执行器 - async-executor-activate: false - #启用异步执行器 - job-executor-activate: false - jpa: - open-in-view: false - #配置freemarker - freemarker: - # 设置模板后缀名 - suffix: .ftl - # 设置文档类型 - content-type: text/html - # 设置页面编码格式 - charset: UTF-8 - # 设置页面缓存 - cache: false - prefer-file-system-access: false - # 设置ftl文件路径 - template-loader-path: - - classpath:/templates - # 设置静态文件路径,js,css等 - mvc: - static-path-pattern: /** - resource: - static-locations: classpath:/static/,classpath:/public/ - autoconfigure: - exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure -#mybatis plus 设置 -mybatis-plus: - mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml - global-config: - # 关闭MP3.0自带的banner - banner: false - db-config: - #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)"; - id-type: ASSIGN_ID - # 默认数据库表下划线命名 - table-underline: true - configuration: - # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 - #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - # 返回类型为Map,显示null对应的字段 - call-setters-on-nulls: true \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/pom.xml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/pom.xml deleted file mode 100644 index 0ea115a..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/pom.xml +++ /dev/null @@ -1,59 +0,0 @@ -<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>jeecg-boot-starter</artifactId> - <groupId>org.jeecgframework.boot</groupId> - <version>3.3.0</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jeecg-boot-starter-cloud</artifactId> - - <dependencies> - <dependency> - <groupId>org.jeecgframework.boot</groupId> - <artifactId>jeecg-system-cloud-api</artifactId> - </dependency> - <!-- Nacos注册中心 --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> - </dependency> - <!-- Nacos配置中心 --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> - </dependency> - <!-- feign --> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-openfeign</artifactId> - </dependency> - <!-- sentinel限流熔断降级 --> - <dependency> - <groupId>com.alibaba.cloud</groupId> - <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> - </dependency> - <!--sentinel持久化 --> - <dependency> - <groupId>com.alibaba.csp</groupId> - <artifactId>sentinel-datasource-nacos</artifactId> - </dependency> - - <!-- springboot up 2.6.6 --> - <!-- Alibaba Nacos 配置 --> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-bootstrap</artifactId> - </dependency> - <!-- SpringCloud 负载均衡 --> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-loadbalancer</artifactId> - </dependency> - <!-- springboot up 2.6.6 --> - - </dependencies> - -</project> \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java deleted file mode 100644 index ec7aa84..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java +++ /dev/null @@ -1,195 +0,0 @@ -package org.jeecg.config; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.SortedMap; - -import javax.servlet.http.HttpServletRequest; - -import org.jeecg.common.constant.CommonConstant; -import org.jeecg.common.util.DateUtils; -import org.jeecg.common.util.PathMatcherUtil; -import org.jeecg.common.config.mqtoken.UserTokenContext; -import org.jeecg.config.mybatis.TenantContext; -import org.jeecg.config.sign.interceptor.SignAuthConfiguration; -import org.jeecg.config.sign.util.HttpUtils; -import org.jeecg.config.sign.util.SignUtil; -import org.springframework.beans.factory.ObjectFactory; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.http.HttpMessageConverters; -import org.springframework.cloud.openfeign.FeignAutoConfiguration; -import org.springframework.cloud.openfeign.support.SpringDecoder; -import org.springframework.cloud.openfeign.support.SpringEncoder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.context.annotation.Scope; -import org.springframework.http.MediaType; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.alibaba.fastjson.support.config.FastJsonConfig; -import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; -import com.alibaba.fastjson.support.springfox.SwaggerJsonSerializer; - -import feign.Feign; -import feign.Logger; -import feign.RequestInterceptor; -import feign.codec.Decoder; -import feign.codec.Encoder; -import feign.form.spring.SpringFormEncoder; -import lombok.extern.slf4j.Slf4j; - -/** - * @Description: FeignConfig - * @author: JeecgBoot - */ -@ConditionalOnClass(Feign.class) -@AutoConfigureBefore(FeignAutoConfiguration.class) -@Slf4j -@Configuration -public class FeignConfig { - - /** - * 设置feign header参数 - * 【X_ACCESS_TOKEN】【X_SIGN】【X_TIMESTAMP】 - * @return - */ - @Bean - public RequestInterceptor requestInterceptor() { - return requestTemplate -> { - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (null != attributes) { - HttpServletRequest request = attributes.getRequest(); - log.debug("Feign request: {}", request.getRequestURI()); - // 将token信息放入header中 - String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); - if(token==null || "".equals(token)){ - token = request.getParameter("token"); - } - log.info("Feign Login Request token: {}", token); - requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token); - - //update-begin-author:taoyan date:2022-6-23 for: issues/I5AO20 多租户微服务之间调用找不到tenant-id(自定义页面) - // 将tenantId信息放入header中 - String tenantId = request.getHeader(CommonConstant.TENANT_ID); - if(tenantId==null || "".equals(tenantId)){ - tenantId = request.getParameter(CommonConstant.TENANT_ID); - } - log.info("Feign Login Request tenantId: {}", tenantId); - requestTemplate.header(CommonConstant.TENANT_ID, tenantId); - //update-end-author:taoyan date:2022-6-23 for: issues/I5AO20 多租户微服务之间调用找不到tenant-id(自定义页面) - - }else{ - String token = UserTokenContext.getToken(); - log.info("Feign no Login token: {}", token); - requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token); - - //update-begin-author:taoyan date:2022-6-23 for: issues/I5AO20 多租户微服务之间调用找不到tenant-id(自定义页面) - String tenantId = TenantContext.getTenant(); - log.info("Feign no Login tenantId: {}", tenantId); - requestTemplate.header(CommonConstant.TENANT_ID, tenantId); - //update-end-author:taoyan date:2022-6-23 for: issues/I5AO20 多租户微服务之间调用找不到tenant-id(自定义页面) - } - - //================================================================================================================ - //针对特殊接口,进行加签验证 ——根据URL地址过滤请求 【字典表参数签名验证】 - if (PathMatcherUtil.matches(Arrays.asList(SignAuthConfiguration.SIGN_URL_LIST),requestTemplate.path())) { - try { - log.info("============================ [begin] fegin starter url ============================"); - log.info(requestTemplate.path()); - log.info(requestTemplate.method()); - String queryLine = requestTemplate.queryLine(); - if(queryLine!=null && queryLine.startsWith("?")){ - queryLine = queryLine.substring(1); - } - log.info(queryLine); - if(requestTemplate.body()!=null){ - log.info(new String(requestTemplate.body())); - } - SortedMap<String, String> allParams = HttpUtils.getAllParams(requestTemplate.path(),queryLine,requestTemplate.body(),requestTemplate.method()); - String sign = SignUtil.getParamsSign(allParams); - log.info(" Feign request params sign: {}",sign); - log.info("============================ [end] fegin starter url ============================"); - requestTemplate.header(CommonConstant.X_SIGN, sign); - //update-begin--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯 - requestTemplate.header(CommonConstant.X_TIMESTAMP, String.valueOf(System.currentTimeMillis())); - //update-end--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯 - } catch (IOException e) { - e.printStackTrace(); - } - } - //================================================================================================================ - }; - } - - - - /** - * Feign 客户端的日志记录,默认级别为NONE - * Logger.Level 的具体级别如下: - * NONE:不记录任何信息 - * BASIC:仅记录请求方法、URL以及响应状态码和执行时间 - * HEADERS:除了记录 BASIC级别的信息外,还会记录请求和响应的头信息 - * FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据 - */ - @Bean - Logger.Level feignLoggerLevel() { - return Logger.Level.FULL; - } - - /** - * Feign支持文件上传 - * @param messageConverters - * @return - */ - @Bean - @Primary - @Scope("prototype") - public Encoder multipartFormEncoder(ObjectFactory<HttpMessageConverters> messageConverters) { - return new SpringFormEncoder(new SpringEncoder(messageConverters)); - } - - // update-begin--Author:sunjianlei Date:20210604 for: 给 Feign 添加 FastJson 的解析支持 ---------- - @Bean - public Encoder feignEncoder() { - return new SpringEncoder(feignHttpMessageConverter()); - } - - @Bean - public Decoder feignDecoder() { - return new SpringDecoder(feignHttpMessageConverter()); - } - - /** - * 设置解码器为fastjson - * - * @return - */ - private ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() { - final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(this.getFastJsonConverter()); - return () -> httpMessageConverters; - } - - private FastJsonHttpMessageConverter getFastJsonConverter() { - FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); - - List<MediaType> supportedMediaTypes = new ArrayList<>(); - MediaType mediaTypeJson = MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE); - supportedMediaTypes.add(mediaTypeJson); - converter.setSupportedMediaTypes(supportedMediaTypes); - FastJsonConfig config = new FastJsonConfig(); - config.getSerializeConfig().put(JSON.class, new SwaggerJsonSerializer()); - config.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect); - converter.setFastJsonConfig(config); - - return converter; - } - // update-end--Author:sunjianlei Date:20210604 for: 给 Feign 添加 FastJson 的解析支持 ---------- - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/GwCorsFilter.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/GwCorsFilter.java deleted file mode 100644 index 89762e1..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/GwCorsFilter.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.jeecg.starter.cloud.config; - -/** - * @Description: 跨域设置 (升级SpringBoot2.6.6) - * @author: zyf - * @date: 2022/02/21 - * @version: V1.0 - */ -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.reactive.CorsWebFilter; -import org.springframework.web.util.pattern.PathPatternParser; - -@Configuration -public class GwCorsFilter { - - @Bean - public CorsWebFilter corsFilter() { - CorsConfiguration config = new CorsConfiguration(); - config.setAllowCredentials(true); - config.addAllowedOriginPattern("*"); - config.addAllowedHeader("*"); - config.addAllowedMethod("*"); - config.setMaxAge(18000L); - org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource source = - new org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource(new PathPatternParser()); - source.registerCorsConfiguration("/**", config); - return new CorsWebFilter(source); - } -} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/PersonBeanConfiguration.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/PersonBeanConfiguration.java deleted file mode 100644 index 596dafa..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/PersonBeanConfiguration.java +++ /dev/null @@ -1,24 +0,0 @@ -//package org.jeecg.starter.cloud.config; -// -//import feign.Client; -//import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -//import org.springframework.cloud.netflix.ribbon.SpringClientFactory; -//import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory; -//import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient; -//import org.springframework.context.annotation.Bean; -//import org.springframework.context.annotation.Configuration; -// -//@Configuration -//public class PersonBeanConfiguration { -// -// /** -// * 创建FeignClient -// */ -// @Bean -// @ConditionalOnMissingBean -// public Client feignClient(CachingSpringLoadBalancerFactory cachingFactory, -// SpringClientFactory clientFactory) { -// return new LoadBalancerFeignClient(new Client.Default(null, null), -// cachingFactory, clientFactory); -// } -//} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/IJeecgFeignService.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/IJeecgFeignService.java deleted file mode 100644 index c75e4ba..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/IJeecgFeignService.java +++ /dev/null @@ -1,6 +0,0 @@ -//package org.jeecg.starter.cloud.feign; -// -//public interface IJeecgFeignService { -// -// <T> T newInstance(Class<T> apiType, String name); -//} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/impl/JeecgFeignService.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/impl/JeecgFeignService.java deleted file mode 100644 index 4d4ca5e..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/impl/JeecgFeignService.java +++ /dev/null @@ -1,60 +0,0 @@ -//package org.jeecg.starter.cloud.feign.impl; -// -//import feign.*; -//import feign.codec.Decoder; -//import feign.codec.Encoder; -//import lombok.extern.slf4j.Slf4j; -//import org.jeecg.common.constant.CommonConstant; -//import org.jeecg.starter.cloud.feign.IJeecgFeignService; -//import org.springframework.boot.autoconfigure.AutoConfigureBefore; -//import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -//import org.springframework.cloud.openfeign.FeignAutoConfiguration; -//import org.springframework.cloud.openfeign.FeignClientsConfiguration; -//import org.springframework.context.annotation.Import; -//import org.springframework.stereotype.Service; -//import org.springframework.web.context.request.RequestContextHolder; -//import org.springframework.web.context.request.ServletRequestAttributes; -// -//import javax.servlet.http.HttpServletRequest; -// -//@Service -//@Slf4j -//@ConditionalOnClass(Feign.class) -//@AutoConfigureBefore(FeignAutoConfiguration.class) -//@Import(FeignClientsConfiguration.class) -//public class JeecgFeignService implements IJeecgFeignService { -// -// -// //Feign 原生构造器 -// Feign.Builder builder; -// -// //创建构造器 -// public JeecgFeignService(Decoder decoder, Encoder encoder, Client client, Contract contract) { -// this.builder = Feign.builder() -// .client(client) -// .encoder(encoder) -// .decoder(decoder) -// .contract(contract); -// -// builder.requestInterceptor(requestTemplate -> { -// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); -// if (null != attributes) { -// HttpServletRequest request = attributes.getRequest(); -// log.info("Feign request: {}", request.getRequestURI()); -// // 将token信息放入header中 -// String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); -// if(token==null){ -// token = request.getParameter("token"); -// } -// log.info("Feign request token: {}", token); -// requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token); -// } -// }); -// } -// -// -// @Override -// public <T> T newInstance(Class<T> clientClass, String serviceName) { -// return builder.target(clientClass, String.format("http://%s/", serviceName)); -// } -//} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/handler/CustomSentinelExceptionHandler.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/handler/CustomSentinelExceptionHandler.java deleted file mode 100644 index 23189c1..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/handler/CustomSentinelExceptionHandler.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.jeecg.starter.cloud.handler; - -import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler; -import com.alibaba.csp.sentinel.slots.block.BlockException; -import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException; -import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException; -import com.alibaba.csp.sentinel.slots.block.flow.FlowException; -import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowException; -import com.alibaba.csp.sentinel.slots.system.SystemBlockException; -import org.springframework.context.annotation.Configuration; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * @Description: 全局Sentinel自定义信息处理(需要启动Sentinel客户端) - * @author: zyf - * @date: 2022/02/18 - * @version: V1.0 - */ -@Configuration -public class CustomSentinelExceptionHandler implements BlockExceptionHandler { - - @Override - public void handle(HttpServletRequest request, HttpServletResponse response, BlockException ex) throws Exception { - - String msg = null; - - if (ex instanceof FlowException) { - msg = "访问频繁,请稍候再试"; - - } else if (ex instanceof DegradeException) { - msg = "系统降级"; - - } else if (ex instanceof ParamFlowException) { - msg = "热点参数限流"; - - } else if (ex instanceof SystemBlockException) { - msg = "系统规则限流或降级"; - - } else if (ex instanceof AuthorityException) { - msg = "授权规则不通过"; - - } else { - msg = "未知限流降级"; - } - // http状态码 - response.setStatus(200); - response.setCharacterEncoding("utf-8"); - response.setHeader("Content-Type", "application/json;charset=utf-8"); - response.setContentType("application/json;charset=utf-8"); - response.getWriter().write("{\"code\":500,\"message\":"+msg+"}"); - } - -} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java deleted file mode 100644 index 63ba43a..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/interceptor/DefaultRequestOriginParser.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.jeecg.starter.cloud.interceptor; - -import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser; -import org.apache.commons.lang3.StringUtils; -import org.jeecg.common.util.IpUtils; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; - -/** - * 【示例】sentinel ip和参数授权规则拦截器(黑名单白名单) - * 1. 有参数origin的时候走参数拦截规则 - * 2. 当参数为空时走ip拦截模式 - * - * @author zyf - */ -@Component -public class DefaultRequestOriginParser implements RequestOriginParser { - @Override - public String parseOrigin(HttpServletRequest request) { - //基于请求参数,origin对应授权规则中的流控应用名称,也可通过getHeader传参 - String origin = request.getParameter("origin"); - if (StringUtils.isNotEmpty(origin)) { - return origin; - } else { - //当参数为空使用ip拦截模式 - String ip = IpUtils.getIpAddr(request); - return ip; - } - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/resources/bootstrap.yml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/resources/bootstrap.yml deleted file mode 100644 index ce253f7..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-cloud/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,59 +0,0 @@ -spring: - #升级SpringBoot2.6.6,允许循环依赖 - main: - allow-circular-references: true - profiles: - # 当前激活环境 - active: '@profile.name@' - cloud: - #配置Bus id(远程推送事件) - bus: - id: ${spring.application.name}:${server.port} - nacos: - config: - # Nacos 认证用户 - username: @config.username@ - # Nacos 认证密码 - password: @config.password@ - # 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等 - namespace: @config.namespace@ - # 配置中心地址 - server-addr: @config.server-addr@ - # 配置对应的分组 - group: @config.group@ - # 配置文件后缀 - file-extension: yaml - prefix: @prefix.name@ - # 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh -# shared-configs[0]: -# data-id: @prefix.name@-sharding.yaml #分库分表配置 -# group: @config.group@ -# refresh: false -# shared-configs[1]: -# data-id: @prefix.name@-common.yaml # 配置文件名-Data Id -# group: @config.group@ # 默认为DEFAULT_GROUP -# refresh: false # 是否动态刷新,默认为false - discovery: - namespace: @config.namespace@ - server-addr: @config.server-addr@ - watch: - enabled: false -# feign启用sentinel -feign: - sentinel: - enabled: true - okhttp: - enabled: true - httpclient: - enabled: false - client: - config: - default: - #不设置connectTimeout会导致readTimeout设置不生效 - connectTimeout: 5000 - readTimeout: 10000 - compression: - request: - enabled: true - response: - enabled: true \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/pom.xml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/pom.xml deleted file mode 100644 index f13893d..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>jeecg-boot-starter</artifactId> - <groupId>org.jeecgframework.boot</groupId> - <version>3.3.0</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jeecg-boot-starter-job</artifactId> - <description>jeecg-boot-starter-定时任务</description> - <dependencies> - <dependency> - <groupId>com.xuxueli</groupId> - <artifactId>xxl-job-core</artifactId> - <version>${xxl-job-core.version}</version> - </dependency> - </dependencies> - -</project> \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java deleted file mode 100644 index d6cf990..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.xxl.job.core.executor; - -import com.xxl.job.core.biz.AdminBiz; -import com.xxl.job.core.biz.client.AdminBizClient; -import com.xxl.job.core.handler.IJobHandler; -import com.xxl.job.core.log.XxlJobFileAppender; -import com.xxl.job.core.server.EmbedServer; -import com.xxl.job.core.thread.JobLogFileCleanThread; -import com.xxl.job.core.thread.JobThread; -import com.xxl.job.core.thread.TriggerCallbackThread; -import com.xxl.job.core.util.IpUtil; -import com.xxl.job.core.util.NetUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -/** - * 重写目的修改默认端口9999为10000避免和网关冲突 - */ -public class XxlJobExecutor { - private static final Logger logger = LoggerFactory.getLogger(XxlJobExecutor.class); - - // ---------------------- param ---------------------- - private String adminAddresses; - private String accessToken; - private String appname; - private String address; - private String ip; - private int port; - private String logPath; - private int logRetentionDays; - - public void setAdminAddresses(String adminAddresses) { - this.adminAddresses = adminAddresses; - } - - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - public void setAppname(String appname) { - this.appname = appname; - } - - public void setAddress(String address) { - this.address = address; - } - - public void setIp(String ip) { - this.ip = ip; - } - - public void setPort(int port) { - this.port = port; - } - - public void setLogPath(String logPath) { - this.logPath = logPath; - } - - public void setLogRetentionDays(int logRetentionDays) { - this.logRetentionDays = logRetentionDays; - } - - - // ---------------------- start + stop ---------------------- - public void start() throws Exception { - - // init logpath - XxlJobFileAppender.initLogPath(logPath); - - // init invoker, admin-client - initAdminBizList(adminAddresses, accessToken); - - - // init JobLogFileCleanThread - JobLogFileCleanThread.getInstance().start(logRetentionDays); - - // init TriggerCallbackThread - TriggerCallbackThread.getInstance().start(); - - // init executor-server - initEmbedServer(address, ip, port, appname, accessToken); - } - - public void destroy() { - // destory executor-server - stopEmbedServer(); - - // destory jobThreadRepository - if (jobThreadRepository.size() > 0) { - for (Map.Entry<Integer, JobThread> item : jobThreadRepository.entrySet()) { - JobThread oldJobThread = removeJobThread(item.getKey(), "web container destroy and kill the job."); - // wait for job thread push result to callback queue - if (oldJobThread != null) { - try { - oldJobThread.join(); - } catch (InterruptedException e) { - logger.error(">>>>>>>>>>> xxl-job, JobThread destroy(join) error, jobId:{}", item.getKey(), e); - } - } - } - jobThreadRepository.clear(); - } - jobHandlerRepository.clear(); - - - // destory JobLogFileCleanThread - JobLogFileCleanThread.getInstance().toStop(); - - // destory TriggerCallbackThread - TriggerCallbackThread.getInstance().toStop(); - - } - - - // ---------------------- admin-client (rpc invoker) ---------------------- - private static List<AdminBiz> adminBizList; - - private void initAdminBizList(String adminAddresses, String accessToken) throws Exception { - if (adminAddresses != null && adminAddresses.trim().length() > 0) { - for (String address : adminAddresses.trim().split(",")) { - if (address != null && address.trim().length() > 0) { - - AdminBiz adminBiz = new AdminBizClient(address.trim(), accessToken); - - if (adminBizList == null) { - adminBizList = new ArrayList<AdminBiz>(); - } - adminBizList.add(adminBiz); - } - } - } - } - - public static List<AdminBiz> getAdminBizList() { - return adminBizList; - } - - // ---------------------- executor-server (rpc provider) ---------------------- - private EmbedServer embedServer = null; - - private void initEmbedServer(String address, String ip, int port, String appname, String accessToken) throws Exception { - - // fill ip port 修改默认端口 - port = port > 0 ? port : NetUtil.findAvailablePort(10000); - ip = (ip != null && ip.trim().length() > 0) ? ip : IpUtil.getIp(); - - // generate address - if (address == null || address.trim().length() == 0) { - String ip_port_address = IpUtil.getIpPort(ip, port); // registry-address:default use address to registry , otherwise use ip:port if address is null - address = "http://{ip_port}/".replace("{ip_port}", ip_port_address); - } - - // accessToken - if (accessToken == null || accessToken.trim().length() == 0) { - logger.warn(">>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken."); - } - - // start - embedServer = new EmbedServer(); - embedServer.start(address, port, appname, accessToken); - } - - private void stopEmbedServer() { - // stop provider factory - if (embedServer != null) { - try { - embedServer.stop(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - } - } - - - // ---------------------- job handler repository ---------------------- - private static ConcurrentMap<String, IJobHandler> jobHandlerRepository = new ConcurrentHashMap<String, IJobHandler>(); - - public static IJobHandler loadJobHandler(String name) { - return jobHandlerRepository.get(name); - } - - public static IJobHandler registJobHandler(String name, IJobHandler jobHandler) { - logger.info(">>>>>>>>>>> xxl-job register jobhandler success, name:{}, jobHandler:{}", name, jobHandler); - return jobHandlerRepository.put(name, jobHandler); - } - - - // ---------------------- job thread repository ---------------------- - private static ConcurrentMap<Integer, JobThread> jobThreadRepository = new ConcurrentHashMap<Integer, JobThread>(); - - public static JobThread registJobThread(int jobId, IJobHandler handler, String removeOldReason) { - JobThread newJobThread = new JobThread(jobId, handler); - newJobThread.start(); - logger.info(">>>>>>>>>>> xxl-job regist JobThread success, jobId:{}, handler:{}", new Object[]{jobId, handler}); - - JobThread oldJobThread = jobThreadRepository.put(jobId, newJobThread); // putIfAbsent | oh my god, map's put method return the old value!!! - if (oldJobThread != null) { - oldJobThread.toStop(removeOldReason); - oldJobThread.interrupt(); - } - - return newJobThread; - } - - public static JobThread removeJobThread(int jobId, String removeOldReason) { - JobThread oldJobThread = jobThreadRepository.remove(jobId); - if (oldJobThread != null) { - oldJobThread.toStop(removeOldReason); - oldJobThread.interrupt(); - - return oldJobThread; - } - return null; - } - - public static JobThread loadJobThread(int jobId) { - JobThread jobThread = jobThreadRepository.get(jobId); - return jobThread; - } - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/annotation/EnableXxlJob.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/annotation/EnableXxlJob.java deleted file mode 100644 index 4a63f0e..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/annotation/EnableXxlJob.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.jeecg.boot.starter.job.annotation; - -import org.jeecg.boot.starter.job.config.XxlJobConfiguration; -import org.springframework.context.annotation.Import; - -import java.lang.annotation.*; - -/** - * @author zyf - */ -@Target({ ElementType.TYPE }) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -@Import({ XxlJobConfiguration.class }) -public @interface EnableXxlJob { - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/config/XxlJobConfiguration.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/config/XxlJobConfiguration.java deleted file mode 100644 index 225b0a9..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/config/XxlJobConfiguration.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.jeecg.boot.starter.job.config; - -import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; -import lombok.extern.slf4j.Slf4j; -import org.jeecg.boot.starter.job.prop.XxlJobProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * 定时任务配置 - * - * @author jeecg - */ -@Slf4j -@Configuration -@EnableConfigurationProperties(value = XxlJobProperties.class) -@ConditionalOnProperty(value = "jeecg.xxljob.enabled", havingValue = "true", matchIfMissing = true) -public class XxlJobConfiguration { - - - @Autowired - private XxlJobProperties xxlJobProperties; - - //@Bean(initMethod = "start", destroyMethod = "destroy") - @Bean - @ConditionalOnClass() - public XxlJobSpringExecutor xxlJobExecutor() { - log.info(">>>>>>>>>>> xxl-job config init."); - //log.info(">>>> ip="+xxlJobProperties.getIp()+",Port="+xxlJobProperties.getPort()+",address="+xxlJobProperties.getAdminAddresses()); - XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); - xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses()); - xxlJobSpringExecutor.setAppname(xxlJobProperties.getAppname()); - //update-begin--Author:scott -- Date:20210305 -- for:system服务和demo服务有办法同时使用xxl-job吗 #2313--- - //xxlJobSpringExecutor.setIp(xxlJobProperties.getIp()); - //xxlJobSpringExecutor.setPort(xxlJobProperties.getPort()); - //update-end--Author:scott -- Date:20210305 -- for:system服务和demo服务有办法同时使用xxl-job吗 #2313--- - xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken()); - xxlJobSpringExecutor.setLogPath(xxlJobProperties.getLogPath()); - xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getLogRetentionDays()); - return xxlJobSpringExecutor; - } - - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/prop/XxlJobProperties.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/prop/XxlJobProperties.java deleted file mode 100644 index 3aad62c..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/prop/XxlJobProperties.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.jeecg.boot.starter.job.prop; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; - -@Data -@ConfigurationProperties(prefix = "jeecg.xxljob") -public class XxlJobProperties { - - - private String adminAddresses; - - - private String appname; - - - private String ip; - - - private int port; - - - private String accessToken; - - - private String logPath; - - - private int logRetentionDays; - - /** - * 是否开启xxljob - */ - private Boolean enable = true; -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/resources/META-INF/spring.factories b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 913f95e..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-job/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -org.jeecg.boot.starter.job.config.XxlJobConfiguration \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/pom.xml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/pom.xml deleted file mode 100644 index faa99b5..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/pom.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>jeecg-boot-starter</artifactId> - <groupId>org.jeecgframework.boot</groupId> - <version>3.3.0</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jeecg-boot-starter-lock</artifactId> - <description>jeecg-boot-starter-分布式锁</description> - <dependencies> - <dependency> - <groupId>org.jeecgframework.boot</groupId> - <artifactId>jeecg-boot-base-tools</artifactId> - </dependency> - <dependency> - <groupId>org.redisson</groupId> - <artifactId>redisson</artifactId> - </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-aop</artifactId> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - </dependencies> - -</project> \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JLock.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JLock.java deleted file mode 100644 index 3355da7..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JLock.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.jeecg.boot.starter.lock.annotation; - -import org.jeecg.boot.starter.lock.enums.LockModel; - -import java.lang.annotation.*; - -/** - * Redisson分布式锁注解 - * - * @author zyf - * @date 2020-11-11 - */ -@Target({ElementType.TYPE, ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Inherited -public @interface JLock { - - /** - * 锁的模式:如果不设置,自动模式,当参数只有一个.使用 REENTRANT 参数多个 MULTIPLE - */ - LockModel lockModel() default LockModel.AUTO; - - /** - * 如果keys有多个,如果不设置,则使用 联锁 - * @return - */ - String[] lockKey() default {}; - - /** - * key的静态常量:当key的spel的值是LIST,数组时使用+号连接将会被spel认为这个变量是个字符串 - * @return - */ - String keyConstant() default ""; - - - /** - * 锁超时时间,默认30000毫秒 - * - * @return int - */ - long expireSeconds() default 30000L; - - /** - * 等待加锁超时时间,默认10000毫秒 -1 则表示一直等待 - * - * @return int - */ - long waitTime() default 10000L; - - /** - * 未取到锁时提示信息 - * - * @return - */ - String failMsg() default "获取锁失败,请稍后重试"; -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JRepeat.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JRepeat.java deleted file mode 100644 index 3651e20..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JRepeat.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.jeecg.boot.starter.lock.annotation; - -/** - * @author zyf - */ - -import java.lang.annotation.*; - -/** - * 防止重复提交的注解 - * - * @author 2019年6月18日 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD}) -@Documented -public @interface JRepeat { - - /** - * 超时时间 - * - * @return - */ - int lockTime(); - - - /** - * redis 锁key的 - * - * @return redis 锁key - */ - String lockKey() default ""; - - - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/LockConstant.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/LockConstant.java deleted file mode 100644 index b457262..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/LockConstant.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.jeecg.boot.starter.lock.annotation; - -/** - * @author zyf - * @date 2019/10/26 18:26 - */ - -/** - * 分布式锁枚举类 - * @author zyf - */ -public enum LockConstant { - /** - * 通用锁常量 - */ - COMMON("commonLock:", 1, 500, "请勿重复点击"); - /** - * 分布式锁前缀 - */ - private String keyPrefix; - /** - * 等到最大时间,强制获取锁 - */ - private int waitTime; - /** - * 锁失效时间 - */ - private int leaseTime; - /** - * 加锁提示 - */ - private String message; - - LockConstant(String keyPrefix, int waitTime, int leaseTime, String message) { - this.keyPrefix = keyPrefix; - this.waitTime = waitTime; - this.leaseTime = leaseTime; - this.message = message; - } - - public String getKeyPrefix() { - return keyPrefix; - } - - public void setKeyPrefix(String keyPrefix) { - this.keyPrefix = keyPrefix; - } - - public int getWaitTime() { - return waitTime; - } - - public void setWaitTime(int waitTime) { - this.waitTime = waitTime; - } - - public int getLeaseTime() { - return leaseTime; - } - - public void setLeaseTime(int leaseTime) { - this.leaseTime = leaseTime; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/BaseAspect.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/BaseAspect.java deleted file mode 100644 index ec5baf9..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/BaseAspect.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.jeecg.boot.starter.lock.aspect; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.expression.EvaluationContext; -import org.springframework.expression.Expression; -import org.springframework.expression.ExpressionParser; -import org.springframework.expression.spel.standard.SpelExpressionParser; -import org.springframework.expression.spel.support.StandardEvaluationContext; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author zyf - */ -@Slf4j -public class BaseAspect { - - /** - * 通过spring SpEL 获取参数 - * - * @param key 定义的key值 以#开头 例如:#user - * @param parameterNames 形参 - * @param values 形参值 - * @param keyConstant key的常亮 - * @return - */ - public List<String> getValueBySpEL(String key, String[] parameterNames, Object[] values, String keyConstant) { - List<String> keys = new ArrayList<>(); - if (!key.contains("#")) { - String s = "redis:lock:" + key + keyConstant; - log.debug("lockKey:" + s); - keys.add(s); - return keys; - } - //spel解析器 - ExpressionParser parser = new SpelExpressionParser(); - //spel上下文 - EvaluationContext context = new StandardEvaluationContext(); - for (int i = 0; i < parameterNames.length; i++) { - context.setVariable(parameterNames[i], values[i]); - } - Expression expression = parser.parseExpression(key); - Object value = expression.getValue(context); - if (value != null) { - if (value instanceof List) { - List value1 = (List) value; - for (Object o : value1) { - addKeys(keys, o, keyConstant); - } - } else if (value.getClass().isArray()) { - Object[] obj = (Object[]) value; - for (Object o : obj) { - addKeys(keys, o, keyConstant); - } - } else { - addKeys(keys, value, keyConstant); - } - } - log.info("表达式key={},value={}", key, keys); - return keys; - } - - private void addKeys(List<String> keys, Object o, String keyConstant) { - keys.add("redis:lock:" + o.toString() + keyConstant); - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/DistributedLockHandler.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/DistributedLockHandler.java deleted file mode 100644 index c35cc93..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/DistributedLockHandler.java +++ /dev/null @@ -1,167 +0,0 @@ -package org.jeecg.boot.starter.lock.aspect; - -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.reflect.MethodSignature; -import org.jeecg.boot.starter.lock.annotation.JLock; -import org.jeecg.boot.starter.lock.enums.LockModel; -import org.redisson.RedissonMultiLock; -import org.redisson.RedissonRedLock; -import org.redisson.api.RLock; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.LocalVariableTableParameterNameDiscoverer; -import org.springframework.expression.EvaluationContext; -import org.springframework.expression.Expression; -import org.springframework.expression.ExpressionParser; -import org.springframework.expression.spel.standard.SpelExpressionParser; -import org.springframework.expression.spel.support.StandardEvaluationContext; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; - - -/** - * 分布式锁解析器 - * - * @author zyf - * @date 2020-11-11 - */ -@Slf4j -@Aspect -@Component -public class DistributedLockHandler extends BaseAspect{ - - - @Autowired(required = false) - private RedissonClient redissonClient; - - /** - * 切面环绕通知 - * - * @param joinPoint - * @param jLock - * @return Object - */ - @SneakyThrows - @Around("@annotation(jLock)") - public Object around(ProceedingJoinPoint joinPoint, JLock jLock) { - Object obj = null; - log.info("进入RedisLock环绕通知..."); - RLock rLock = getLock(joinPoint, jLock); - boolean res = false; - //获取超时时间 - long expireSeconds = jLock.expireSeconds(); - //等待多久,n秒内获取不到锁,则直接返回 - long waitTime = jLock.waitTime(); - //执行aop - if (rLock != null) { - try { - if (waitTime == -1) { - res = true; - //一直等待加锁 - rLock.lock(expireSeconds, TimeUnit.MILLISECONDS); - } else { - res = rLock.tryLock(waitTime, expireSeconds, TimeUnit.MILLISECONDS); - } - if (res) { - obj = joinPoint.proceed(); - } else { - log.error("获取锁异常"); - } - } finally { - if (res) { - rLock.unlock(); - } - } - } - log.info("结束RedisLock环绕通知..."); - return obj; - } - - @SneakyThrows - private RLock getLock(ProceedingJoinPoint joinPoint, JLock jLock) { - String[] keys = jLock.lockKey(); - if (keys.length == 0) { - throw new RuntimeException("keys不能为空"); - } - String[] parameterNames = new LocalVariableTableParameterNameDiscoverer().getParameterNames(((MethodSignature) joinPoint.getSignature()).getMethod()); - Object[] args = joinPoint.getArgs(); - - LockModel lockModel = jLock.lockModel(); - RLock rLock = null; - String keyConstant = jLock.keyConstant(); - if (lockModel.equals(LockModel.AUTO)) { - if (keys.length > 1) { - lockModel = LockModel.REDLOCK; - } else { - lockModel = LockModel.REENTRANT; - } - } - if (!lockModel.equals(LockModel.MULTIPLE) && !lockModel.equals(LockModel.REDLOCK) && keys.length > 1) { - throw new RuntimeException("参数有多个,锁模式为->" + lockModel.name() + ".无法锁定"); - } - switch (lockModel) { - case FAIR: - rLock = redissonClient.getFairLock(getValueBySpEL(keys[0], parameterNames, args, keyConstant).get(0)); - break; - case REDLOCK: - List<RLock> rLocks = new ArrayList<>(); - for (String key : keys) { - List<String> valueBySpEL = getValueBySpEL(key, parameterNames, args, keyConstant); - for (String s : valueBySpEL) { - rLocks.add(redissonClient.getLock(s)); - } - } - RLock[] locks = new RLock[rLocks.size()]; - int index = 0; - for (RLock r : rLocks) { - locks[index++] = r; - } - rLock = new RedissonRedLock(locks); - break; - case MULTIPLE: - rLocks = new ArrayList<>(); - - for (String key : keys) { - List<String> valueBySpEL = getValueBySpEL(key, parameterNames, args, keyConstant); - for (String s : valueBySpEL) { - rLocks.add(redissonClient.getLock(s)); - } - } - locks = new RLock[rLocks.size()]; - index = 0; - for (RLock r : rLocks) { - locks[index++] = r; - } - rLock = new RedissonMultiLock(locks); - break; - case REENTRANT: - List<String> valueBySpEL = getValueBySpEL(keys[0], parameterNames, args, keyConstant); - //如果spel表达式是数组或者LIST 则使用红锁 - if (valueBySpEL.size() == 1) { - rLock = redissonClient.getLock(valueBySpEL.get(0)); - } else { - locks = new RLock[valueBySpEL.size()]; - index = 0; - for (String s : valueBySpEL) { - locks[index++] = redissonClient.getLock(s); - } - rLock = new RedissonRedLock(locks); - } - break; - case READ: - rLock = redissonClient.getReadWriteLock(getValueBySpEL(keys[0], parameterNames, args, keyConstant).get(0)).readLock(); - break; - case WRITE: - rLock = redissonClient.getReadWriteLock(getValueBySpEL(keys[0], parameterNames, args, keyConstant).get(0)).writeLock(); - break; - } - return rLock; - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/RepeatSubmitAspect.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/RepeatSubmitAspect.java deleted file mode 100644 index d7eb932..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/RepeatSubmitAspect.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.jeecg.boot.starter.lock.aspect; - -/** - * @author zyf - */ - -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.aspectj.lang.reflect.MethodSignature; -import org.jeecg.boot.starter.lock.annotation.JRepeat; -import org.jeecg.boot.starter.lock.client.RedissonLockClient; -import org.jeecg.common.exception.JeecgCloudException; -import org.springframework.core.LocalVariableTableParameterNameDiscoverer; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -/** - * 防止重复提交分布式锁拦截器 - * - * @author 2019年6月18日 - */ -@Aspect -@Component -public class RepeatSubmitAspect extends BaseAspect{ - - @Resource - private RedissonLockClient redissonLockClient; - - /*** - * 定义controller切入点拦截规则,拦截JRepeat注解的业务方法 - */ - @Pointcut("@annotation(jRepeat)") - public void pointCut(JRepeat jRepeat) { - } - - /** - * AOP分布式锁拦截 - * - * @param joinPoint - * @return - * @throws Exception - */ - @Around("pointCut(jRepeat)") - public Object repeatSubmit(ProceedingJoinPoint joinPoint,JRepeat jRepeat) throws Throwable { - String[] parameterNames = new LocalVariableTableParameterNameDiscoverer().getParameterNames(((MethodSignature) joinPoint.getSignature()).getMethod()); - if (Objects.nonNull(jRepeat)) { - // 获取参数 - Object[] args = joinPoint.getArgs(); - // 进行一些参数的处理,比如获取订单号,操作人id等 - StringBuffer lockKeyBuffer = new StringBuffer(); - String key =getValueBySpEL(jRepeat.lockKey(), parameterNames, args,"RepeatSubmit").get(0); - // 公平加锁,lockTime后锁自动释放 - boolean isLocked = false; - try { - isLocked = redissonLockClient.fairLock(key, TimeUnit.SECONDS, jRepeat.lockTime()); - // 如果成功获取到锁就继续执行 - if (isLocked) { - // 执行进程 - return joinPoint.proceed(); - } else { - // 未获取到锁 - throw new JeecgCloudException("请勿重复提交"); - } - } finally { - // 如果锁还存在,在方法执行完成后,释放锁 - if (isLocked) { - redissonLockClient.unlock(key); - } - } - } - - return joinPoint.proceed(); - } - - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/client/RedissonLockClient.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/client/RedissonLockClient.java deleted file mode 100644 index 746381c..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/client/RedissonLockClient.java +++ /dev/null @@ -1,126 +0,0 @@ -package org.jeecg.boot.starter.lock.client; - -import lombok.extern.slf4j.Slf4j; -import org.redisson.api.RLock; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Component; - -import java.util.concurrent.TimeUnit; - -/** - * 分布式锁实现基于Redisson - * - * @author zyf - * @date 2020-11-11 - */ -@Slf4j -@Component -public class RedissonLockClient { - - @Autowired - private RedissonClient redissonClient; - - @Autowired - private RedisTemplate<String, Object> redisTemplate; - - /** - * 获取锁 - */ - public RLock getLock(String lockKey) { - return redissonClient.getLock(lockKey); - } - - /** - * 加锁操作 - * - * @return boolean - */ - public boolean tryLock(String lockName, long expireSeconds) { - return tryLock(lockName, 0, expireSeconds); - } - - - /** - * 加锁操作 - * - * @return boolean - */ - public boolean tryLock(String lockName, long waitTime, long expireSeconds) { - RLock rLock = getLock(lockName); - boolean getLock = false; - try { - getLock = rLock.tryLock(waitTime, expireSeconds, TimeUnit.SECONDS); - if (getLock) { - log.info("获取锁成功,lockName={}", lockName); - } else { - log.info("获取锁失败,lockName={}", lockName); - } - } catch (InterruptedException e) { - log.error("获取式锁异常,lockName=" + lockName, e); - getLock = false; - } - return getLock; - } - - - public boolean fairLock(String lockKey, TimeUnit unit, int leaseTime) { - RLock fairLock = redissonClient.getFairLock(lockKey); - try { - boolean existKey = existKey(lockKey); - // 已经存在了,就直接返回 - if (existKey) { - return false; - } - return fairLock.tryLock(3, leaseTime, unit); - } catch (InterruptedException e) { - e.printStackTrace(); - } - return false; - } - - public boolean existKey(String key) { - return redisTemplate.hasKey(key); - } - /** - * 锁lockKey - * - * @param lockKey - * @return - */ - public RLock lock(String lockKey) { - RLock lock = getLock(lockKey); - lock.lock(); - return lock; - } - - /** - * 锁lockKey - * - * @param lockKey - * @param leaseTime - * @return - */ - public RLock lock(String lockKey, long leaseTime) { - RLock lock = getLock(lockKey); - lock.lock(leaseTime, TimeUnit.SECONDS); - return lock; - } - - - /** - * 解锁 - * - * @param lockName 锁名称 - */ - public void unlock(String lockName) { - try { - redissonClient.getLock(lockName).unlock(); - } catch (Exception e) { - log.error("解锁异常,lockName=" + lockName, e); - } - } - - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/config/RedissonConfiguration.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/config/RedissonConfiguration.java deleted file mode 100644 index 5608055..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/config/RedissonConfiguration.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.jeecg.boot.starter.lock.config; - -import lombok.extern.slf4j.Slf4j; -import org.jeecg.boot.starter.lock.core.RedissonManager; -import org.jeecg.boot.starter.lock.prop.RedissonProperties; -import org.redisson.api.RedissonClient; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - - -/** - * Redisson自动化配置 - * - * @author zyf - * @date 2020-11-11 - */ -@Slf4j -@Configuration -@ConditionalOnClass(RedissonProperties.class) -@EnableConfigurationProperties(RedissonProperties.class) -public class RedissonConfiguration { - - - - @Bean - @ConditionalOnMissingBean(RedissonClient.class) - public RedissonClient redissonClient(RedissonProperties redissonProperties) { - RedissonManager redissonManager = new RedissonManager(redissonProperties); - log.info("RedissonManager初始化完成,当前连接方式:" + redissonProperties.getType() + ",连接地址:" + redissonProperties.getAddress()); - return redissonManager.getRedisson(); - } - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/RedissonManager.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/RedissonManager.java deleted file mode 100644 index d67bd63..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/RedissonManager.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.jeecg.boot.starter.lock.core; - - -import com.google.common.base.Preconditions; -import lombok.extern.slf4j.Slf4j; -import org.jeecg.boot.starter.lock.core.strategy.RedissonConfigStrategy; -import org.jeecg.boot.starter.lock.prop.RedissonProperties; -import org.jeecg.boot.starter.lock.core.strategy.impl.ClusterRedissonConfigStrategyImpl; -import org.jeecg.boot.starter.lock.core.strategy.impl.MasterslaveRedissonConfigStrategyImpl; -import org.jeecg.boot.starter.lock.core.strategy.impl.SentinelRedissonConfigStrategyImpl; -import org.jeecg.boot.starter.lock.core.strategy.impl.StandaloneRedissonConfigStrategyImpl; -import org.jeecg.boot.starter.lock.enums.RedisConnectionType; -import org.redisson.Redisson; -import org.redisson.config.Config; - - -/** - * Redisson配置管理器,用于初始化的redisson实例 - * - * @author zyf - * @date 2020-11-12 - */ -@Slf4j -public class RedissonManager { - - private Config config = new Config(); - - private Redisson redisson = null; - - public RedissonManager() { - } - - public RedissonManager(RedissonProperties redissonProperties) { - //装配开关 - Boolean enabled = redissonProperties.getEnabled(); - if (enabled) { - try { - config = RedissonConfigFactory.getInstance().createConfig(redissonProperties); - redisson = (Redisson) Redisson.create(config); - } catch (Exception e) { - log.error("Redisson初始化错误", e); - } - } - } - - public Redisson getRedisson() { - return redisson; - } - - /** - * Redisson连接方式配置工厂 - * 双重检查锁 - */ - static class RedissonConfigFactory { - - private RedissonConfigFactory() { - } - - private static volatile RedissonConfigFactory factory = null; - - public static RedissonConfigFactory getInstance() { - if (factory == null) { - synchronized (Object.class) { - if (factory == null) { - factory = new RedissonConfigFactory(); - } - } - } - return factory; - } - - /** - * 根据连接类型創建连接方式的配置 - * - * @param redissonProperties - * @return Config - */ - Config createConfig(RedissonProperties redissonProperties) { - Preconditions.checkNotNull(redissonProperties); - Preconditions.checkNotNull(redissonProperties.getAddress(), "redis地址未配置"); - RedisConnectionType connectionType = redissonProperties.getType(); - // 声明连接方式 - RedissonConfigStrategy redissonConfigStrategy; - if (connectionType.equals(RedisConnectionType.SENTINEL)) { - redissonConfigStrategy = new SentinelRedissonConfigStrategyImpl(); - } else if (connectionType.equals(RedisConnectionType.CLUSTER)) { - redissonConfigStrategy = new ClusterRedissonConfigStrategyImpl(); - } else if (connectionType.equals(RedisConnectionType.MASTERSLAVE)) { - redissonConfigStrategy = new MasterslaveRedissonConfigStrategyImpl(); - } else { - redissonConfigStrategy = new StandaloneRedissonConfigStrategyImpl(); - } - Preconditions.checkNotNull(redissonConfigStrategy, "连接方式创建异常"); - - return redissonConfigStrategy.createRedissonConfig(redissonProperties); - } - } - - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/RedissonConfigStrategy.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/RedissonConfigStrategy.java deleted file mode 100644 index 04d260e..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/RedissonConfigStrategy.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.jeecg.boot.starter.lock.core.strategy; - -import org.jeecg.boot.starter.lock.prop.RedissonProperties; -import org.redisson.config.Config; - -/** - * Redisson配置构建接口 - * - * @author zyf - * @date 2020-11-11 - */ -public interface RedissonConfigStrategy { - - /** - * 根据不同的Redis配置策略创建对应的Config - * - * @param redissonProperties - * @return Config - */ - Config createRedissonConfig(RedissonProperties redissonProperties); -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java deleted file mode 100644 index ffccf64..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.jeecg.boot.starter.lock.core.strategy.impl; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.jeecg.boot.starter.lock.core.strategy.RedissonConfigStrategy; -import org.jeecg.boot.starter.lock.prop.RedissonProperties; -import org.jeecg.boot.starter.lock.enums.GlobalConstant; -import org.redisson.config.Config; - - -/** - * 集群方式Redisson配置 - * cluster方式至少6个节点(3主3从) - * 配置方式:127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384 - * - * @author zyf - * @date 2020-11-11 - */ -@Slf4j -public class ClusterRedissonConfigStrategyImpl implements RedissonConfigStrategy { - - @Override - public Config createRedissonConfig(RedissonProperties redissonProperties) { - Config config = new Config(); - try { - String address = redissonProperties.getAddress(); - String password = redissonProperties.getPassword(); - String[] addrTokens = address.split(","); - // 设置集群(cluster)节点的服务IP和端口 - for (int i = 0; i < addrTokens.length; i++) { - config.useClusterServers().addNodeAddress(GlobalConstant.REDIS_CONNECTION_PREFIX + addrTokens[i]); - if (StringUtils.isNotBlank(password)) { - config.useClusterServers().setPassword(password); - } - } - log.info("初始化集群方式Config,连接地址:" + address); - } catch (Exception e) { - log.error("集群Redisson初始化错误", e); - e.printStackTrace(); - } - return config; - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java deleted file mode 100644 index 59cc745..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.jeecg.boot.starter.lock.core.strategy.impl; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.jeecg.boot.starter.lock.core.strategy.RedissonConfigStrategy; -import org.jeecg.boot.starter.lock.prop.RedissonProperties; -import org.jeecg.boot.starter.lock.enums.GlobalConstant; -import org.redisson.config.Config; - - -import java.util.ArrayList; -import java.util.List; - -/** - * 主从方式Redisson配置 - * <p>配置方式: 127.0.0.1:6379(主),127.0.0.1:6380(子),127.0.0.1:6381(子)</p> - * - * @author zyf - * @date 2020-11-11 - */ -@Slf4j -public class MasterslaveRedissonConfigStrategyImpl implements RedissonConfigStrategy { - - @Override - public Config createRedissonConfig(RedissonProperties redissonProperties) { - Config config = new Config(); - try { - String address = redissonProperties.getAddress(); - String password = redissonProperties.getPassword(); - int database = redissonProperties.getDatabase(); - String[] addrTokens = address.split(","); - String masterNodeAddr = addrTokens[0]; - // 设置主节点ip - config.useMasterSlaveServers().setMasterAddress(masterNodeAddr); - if (StringUtils.isNotBlank(password)) { - config.useMasterSlaveServers().setPassword(password); - } - config.useMasterSlaveServers().setDatabase(database); - // 设置从节点,移除第一个节点,默认第一个为主节点 - List<String> slaveList = new ArrayList<>(); - for (String addrToken : addrTokens) { - slaveList.add(GlobalConstant.REDIS_CONNECTION_PREFIX + addrToken); - } - slaveList.remove(0); - - config.useMasterSlaveServers().addSlaveAddress((String[]) slaveList.toArray()); - log.info("初始化主从方式Config,redisAddress:" + address); - } catch (Exception e) { - log.error("主从Redisson初始化错误", e); - e.printStackTrace(); - } - return config; - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java deleted file mode 100644 index a900d83..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.jeecg.boot.starter.lock.core.strategy.impl; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.jeecg.boot.starter.lock.core.strategy.RedissonConfigStrategy; -import org.jeecg.boot.starter.lock.prop.RedissonProperties; -import org.jeecg.boot.starter.lock.enums.GlobalConstant; -import org.redisson.config.Config; - - -/** - * 哨兵方式Redis连接配置 - * 比如sentinel.conf里配置为sentinel monitor my-sentinel-name 127.0.0.1 6379 2,那么这里就配置my-sentinel-name - * 配置方式:my-sentinel-name,127.0.0.1:26379,127.0.0.1:26389,127.0.0.1:26399 - * @author zyf - * @date 2020-11-11 - */ -@Slf4j -public class SentinelRedissonConfigStrategyImpl implements RedissonConfigStrategy { - - @Override - public Config createRedissonConfig(RedissonProperties redissonProperties) { - Config config = new Config(); - try { - String address = redissonProperties.getAddress(); - String password = redissonProperties.getPassword(); - int database = redissonProperties.getDatabase(); - String[] addrTokens = address.split(","); - String sentinelAliasName = addrTokens[0]; - // 设置redis配置文件sentinel.conf配置的sentinel别名 - config.useSentinelServers().setMasterName(sentinelAliasName); - config.useSentinelServers().setDatabase(database); - if (StringUtils.isNotBlank(password)) { - config.useSentinelServers().setPassword(password); - } - // 设置哨兵节点的服务IP和端口 - for (int i = 1; i < addrTokens.length; i++) { - config.useSentinelServers().addSentinelAddress(GlobalConstant.REDIS_CONNECTION_PREFIX+ addrTokens[i]); - } - log.info("初始化哨兵方式Config,redisAddress:" + address); - } catch (Exception e) { - log.error("哨兵Redisson初始化错误", e); - e.printStackTrace(); - } - return config; - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java deleted file mode 100644 index 3d96217..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.jeecg.boot.starter.lock.core.strategy.impl; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.jeecg.boot.starter.lock.core.strategy.RedissonConfigStrategy; -import org.jeecg.boot.starter.lock.prop.RedissonProperties; -import org.jeecg.boot.starter.lock.enums.GlobalConstant; -import org.redisson.config.Config; - - -/** - * 单机方式Redisson配置 - * - * @author zyf - * @date 2020-11-11 - */ -@Slf4j -public class StandaloneRedissonConfigStrategyImpl implements RedissonConfigStrategy { - - @Override - public Config createRedissonConfig(RedissonProperties redissonProperties) { - Config config = new Config(); - try { - String address = redissonProperties.getAddress(); - String password = redissonProperties.getPassword(); - int database = redissonProperties.getDatabase(); - String redisAddr = GlobalConstant.REDIS_CONNECTION_PREFIX + address; - config.useSingleServer().setAddress(redisAddr); - config.useSingleServer().setDatabase(database); - if (StringUtils.isNotBlank(password)) { - config.useSingleServer().setPassword(password); - } - log.info("初始化Redisson单机配置,连接地址:" + address); - } catch (Exception e) { - log.error("单机Redisson初始化错误", e); - e.printStackTrace(); - } - return config; - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/GlobalConstant.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/GlobalConstant.java deleted file mode 100644 index 5c7b2c9..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/GlobalConstant.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.jeecg.boot.starter.lock.enums; - -/** - * 全局常量枚举 - * - * @author zyf - * @date 2020-11-11 - */ - -public interface GlobalConstant { - - /** - * Redis地址连接前缀 - */ - String REDIS_CONNECTION_PREFIX = "redis://"; - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/LockModel.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/LockModel.java deleted file mode 100644 index 3cef7ad..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/LockModel.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.jeecg.boot.starter.lock.enums; - -/** - * 锁的模式 - * @author jeecg - */ -public enum LockModel { - //可重入锁 - REENTRANT, - //公平锁 - FAIR, - //联锁(可以把一组锁当作一个锁来加锁和释放) - MULTIPLE, - //红锁 - REDLOCK, - //读锁 - READ, - //写锁 - WRITE, - //自动模式,当参数只有一个.使用 REENTRANT 参数多个 REDLOCK - AUTO -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/RedisConnectionType.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/RedisConnectionType.java deleted file mode 100644 index c41bad6..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/RedisConnectionType.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.jeecg.boot.starter.lock.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * Redis连接方式 - * @author zyf - * @date 2020-11-11 - */ -@Getter -@AllArgsConstructor -public enum RedisConnectionType { - /** - * 单机部署方式(默认) - */ - STANDALONE("standalone", "单机部署方式"), - /** - * 哨兵部署方式 - */ - SENTINEL("sentinel", "哨兵部署方式"), - /** - * 集群部署方式 - */ - CLUSTER("cluster", "集群方式"), - /** - * 主从部署方式 - */ - MASTERSLAVE("masterslave", "主从部署方式"); - - /** - * 编码 - */ - private final String code; - /** - * 名称 - */ - private final String name; -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/prop/RedissonProperties.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/prop/RedissonProperties.java deleted file mode 100644 index 9967679..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/prop/RedissonProperties.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.jeecg.boot.starter.lock.prop; - -import lombok.Data; -import org.jeecg.boot.starter.lock.enums.RedisConnectionType; -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * Redisson配置映射类 - * - * @author zyf - * @date 2020-11-11 - */ -@Data -@ConfigurationProperties(prefix = "jeecg.redisson") -public class RedissonProperties { - - /** - * redis主机地址,ip:port,多个用逗号(,)分隔 - */ - private String address; - /** - * 连接类型 - */ - private RedisConnectionType type; - /** - * 密码 - */ - private String password; - /** - * 数据库(默认0) - */ - private int database; - - /** - * 是否装配redisson配置 - */ - private Boolean enabled = true; - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/resources/META-INF/spring.factories b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 4d78284..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,4 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - org.jeecg.boot.starter.lock.config.RedissonConfiguration - - diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockService.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockService.java deleted file mode 100644 index 97b8dc1..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockService.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.jeecg.boot.starter.lock.test; - -import org.jeecg.boot.starter.lock.annotation.JLock; -import org.jeecg.boot.starter.lock.annotation.JRepeat; -import org.jeecg.boot.starter.lock.annotation.LockConstant; -import org.jeecg.boot.starter.lock.client.RedissonLockClient; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -@Service -public class LockService { - - @Resource - private RedissonLockClient redissonLockClient; - - int n = 10; - - /** - * 模拟秒杀(注解方式) - */ - @JLock(lockKey = "#productId", expireSeconds = 5000) - public void seckill(String productId) { - if (n <= 0) { - System.out.println("活动已结束,请下次再来"); - return; - } - System.out.println(Thread.currentThread().getName() + ":秒杀到了商品"); - System.out.println(--n); - } - - /** - * 模拟秒杀(编程方式) - */ - public void seckill2(String productId) { - redissonLockClient.tryLock(productId, 5000); - if (n <= 0) { - System.out.println("活动已结束,请下次再来"); - return; - } - System.out.println(Thread.currentThread().getName() + ":秒杀到了商品"); - System.out.println(--n); - redissonLockClient.unlock(productId); - } - - - /** - * 测试重复提交 - */ - @JRepeat(lockKey = "#name", lockTime = 5) - public void reSubmit(String name) { - try { - Thread.sleep(1500); - } catch (InterruptedException e) { - e.printStackTrace(); - } - System.out.println("提交成功" + name); - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTest.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTest.java deleted file mode 100644 index cd0cc35..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.jeecg.boot.starter.lock.test; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.stream.IntStream; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = LockTestApplication.class) -public class LockTest { - @Autowired - LockService lockService; - - /** - * 测试分布式锁(模拟秒杀) - */ - @Test - public void test1() throws Exception { - ExecutorService executorService = Executors.newFixedThreadPool(6); - IntStream.range(0, 30).forEach(i -> executorService.submit(() -> { - try { - lockService.seckill("20120508784"); - } catch (Exception e) { - e.printStackTrace(); - } - })); - executorService.awaitTermination(30, TimeUnit.SECONDS); - } - - /** - * 测试分布式锁(模拟秒杀) - */ - @Test - public void test2() throws Exception { - ExecutorService executorService = Executors.newFixedThreadPool(6); - IntStream.range(0, 30).forEach(i -> executorService.submit(() -> { - try { - lockService.seckill2("20120508784"); - } catch (Exception e) { - e.printStackTrace(); - } - })); - executorService.awaitTermination(30, TimeUnit.SECONDS); - } - - /** - * 测试分布式锁(模拟重复提交) - */ - @Test - public void test3() throws Exception { - ExecutorService executorService = Executors.newFixedThreadPool(6); - IntStream.range(0, 20).forEach(i -> executorService.submit(() -> { - try { - lockService.reSubmit("test"); - } catch (Exception e) { - e.printStackTrace(); - } - })); - executorService.awaitTermination(30, TimeUnit.SECONDS); - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTestApplication.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTestApplication.java deleted file mode 100644 index 2696677..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTestApplication.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.jeecg.boot.starter.lock.test; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.EnableAspectJAutoProxy; - -@SpringBootApplication(scanBasePackages = "org.jeecg") -@EnableAspectJAutoProxy -public class LockTestApplication { - - public static void main(String[] args) { - SpringApplication.run(LockTestApplication.class, args); - } - -} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/TestUser.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/TestUser.java deleted file mode 100644 index 71ed30c..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/TestUser.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.jeecg.boot.starter.lock.test; - -import lombok.Data; - -@Data -public class TestUser { - private String userId; - private String userName; -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/resources/application.yml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/resources/application.yml deleted file mode 100644 index d66a161..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-lock/src/test/resources/application.yml +++ /dev/null @@ -1,19 +0,0 @@ -spring: - redis: - database: 0 - host: 127.0.0.1 - lettuce: - pool: - max-active: 8 #最大连接数据库连接数,设 0 为没有限制 - max-idle: 8 #最大等待连接中的数量,设 0 为没有限制 - max-wait: -1ms #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 - min-idle: 0 #最小等待连接中的数量,设 0 为没有限制 - shutdown-timeout: 100ms - password: jeecg - port: 6379 -jeecg : - redisson: - address: 127.0.0.1:6379 - password: jeecg - type: STANDALONE - enabled: true \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/pom.xml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/pom.xml deleted file mode 100644 index 3292f14..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>jeecg-boot-starter</artifactId> - <groupId>org.jeecgframework.boot</groupId> - <version>3.3.0</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jeecg-boot-starter-rabbitmq</artifactId> - <description>jeecg-boot-starter-消息队列</description> - <dependencies> - <!-- 消息总线 rabbitmq --> - <dependency> - <groupId>org.springframework.cloud</groupId> - <artifactId>spring-cloud-starter-bus-amqp</artifactId> - </dependency> - </dependencies> - -</project> \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/client/RabbitMqClient.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/client/RabbitMqClient.java deleted file mode 100644 index 388f749..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/client/RabbitMqClient.java +++ /dev/null @@ -1,359 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.client; - - -import cn.hutool.core.util.ObjectUtil; -import lombok.extern.slf4j.Slf4j; -import org.jeecg.boot.starter.rabbitmq.event.EventObj; -import org.jeecg.boot.starter.rabbitmq.event.JeecgRemoteApplicationEvent; -import org.jeecg.boot.starter.rabbitmq.exchange.DelayExchangeBuilder; -import org.jeecg.common.annotation.RabbitComponent; -import org.jeecg.common.base.BaseMap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.amqp.core.*; -import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.amqp.rabbit.core.RabbitAdmin; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.bus.BusProperties; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationEventPublisher; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import javax.annotation.Resource; -import java.lang.reflect.Method; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -/** - * 消息队列客户端 - */ -@Slf4j -@Configuration -public class RabbitMqClient { - - private static final Logger logger = LoggerFactory.getLogger(RabbitMqClient.class); - - private final RabbitAdmin rabbitAdmin; - - private final RabbitTemplate rabbitTemplate; - - - @Resource - private SimpleMessageListenerContainer messageListenerContainer; - - @Resource - BusProperties busProperties; - @Resource - private ApplicationEventPublisher publisher; - - - @Resource - private ApplicationContext applicationContext; - - - @Bean - public void initQueue() { - Map<String, Object> beansWithRqbbitComponentMap = this.applicationContext.getBeansWithAnnotation(RabbitComponent.class); - Class<? extends Object> clazz = null; - for (Map.Entry<String, Object> entry : beansWithRqbbitComponentMap.entrySet()) { - log.info("初始化队列............"); - //获取到实例对象的class信息 - clazz = entry.getValue().getClass(); - Method[] methods = clazz.getMethods(); - RabbitListener rabbitListener = clazz.getAnnotation(RabbitListener.class); - if (ObjectUtil.isNotEmpty(rabbitListener)) { - createQueue(rabbitListener); - } - for (Method method : methods) { - RabbitListener methodRabbitListener = method.getAnnotation(RabbitListener.class); - if (ObjectUtil.isNotEmpty(methodRabbitListener)) { - createQueue(methodRabbitListener); - } - } - - } - } - - /** - * 初始化队列 - * - * @param rabbitListener - */ - private void createQueue(RabbitListener rabbitListener) { - String[] queues = rabbitListener.queues(); - DirectExchange directExchange = createExchange(DelayExchangeBuilder.DELAY_EXCHANGE); - //创建交换机 - rabbitAdmin.declareExchange(directExchange); - if (ObjectUtil.isNotEmpty(queues)) { - for (String queueName : queues) { - Properties result = rabbitAdmin.getQueueProperties(queueName); - if (ObjectUtil.isEmpty(result)) { - Queue queue = new Queue(queueName); - addQueue(queue); - Binding binding = BindingBuilder.bind(queue).to(directExchange).with(queueName); - rabbitAdmin.declareBinding(binding); - log.info("创建队列:" + queueName); - }else{ - log.info("已有队列:" + queueName); - } - } - } - } - - - private Map sentObj = new HashMap<>(); - - - @Autowired - public RabbitMqClient(RabbitAdmin rabbitAdmin, RabbitTemplate rabbitTemplate) { - this.rabbitAdmin = rabbitAdmin; - this.rabbitTemplate = rabbitTemplate; - } - - - /** - * 发送远程事件 - * - * @param handlerName - * @param baseMap - */ - public void publishEvent(String handlerName, BaseMap baseMap) { - EventObj eventObj = new EventObj(); - eventObj.setHandlerName(handlerName); - eventObj.setBaseMap(baseMap); - publisher.publishEvent(new JeecgRemoteApplicationEvent(eventObj, busProperties.getId())); - } - - /** - * 转换Message对象 - * - * @param messageType 返回消息类型 MessageProperties类中常量 - * @param msg - * @return - */ - public Message getMessage(String messageType, Object msg) { - MessageProperties messageProperties = new MessageProperties(); - messageProperties.setContentType(messageType); - Message message = new Message(msg.toString().getBytes(), messageProperties); - return message; - } - - /** - * 有绑定Key的Exchange发送 - * - * @param routingKey - * @param msg - */ - public void sendMessageToExchange(TopicExchange topicExchange, String routingKey, Object msg) { - Message message = getMessage(MessageProperties.CONTENT_TYPE_JSON, msg); - rabbitTemplate.send(topicExchange.getName(), routingKey, message); - } - - /** - * 没有绑定KEY的Exchange发送 - * - * @param exchange - * @param msg - */ - public void sendMessageToExchange(TopicExchange topicExchange, AbstractExchange exchange, String msg) { - addExchange(exchange); - logger.info("RabbitMQ send " + exchange.getName() + "->" + msg); - rabbitTemplate.convertAndSend(topicExchange.getName(), msg); - } - - - /** - * 发送消息 - * - * @param queueName 队列名称 - * @param params 消息内容map - */ - public void sendMessage(String queueName, Object params) { - log.info("发送消息到mq"); - try { - rabbitTemplate.convertAndSend(DelayExchangeBuilder.DELAY_EXCHANGE, queueName, params, message -> { - return message; - }); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 发送消息 - * - * @param queueName 队列名称 - */ - public void sendMessage(String queueName) { - this.send(queueName, this.sentObj, 0); - this.sentObj.clear(); - } - - - public RabbitMqClient put(String key, Object value) { - this.sentObj.put(key, value); - return this; - } - - /** - * 延迟发送消息 - * - * @param queueName 队列名称 - * @param params 消息内容params - * @param expiration 延迟时间 单位毫秒 - */ - public void sendMessage(String queueName, Object params, Integer expiration) { - this.send(queueName, params, expiration); - } - - private void send(String queueName, Object params, Integer expiration) { - Queue queue = new Queue(queueName); - addQueue(queue); - CustomExchange customExchange = DelayExchangeBuilder.buildExchange(); - rabbitAdmin.declareExchange(customExchange); - Binding binding = BindingBuilder.bind(queue).to(customExchange).with(queueName).noargs(); - rabbitAdmin.declareBinding(binding); - SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - log.debug("发送时间:" + sf.format(new Date())); - rabbitTemplate.convertAndSend(DelayExchangeBuilder.DEFAULT_DELAY_EXCHANGE, queueName, params, message -> { - if (expiration != null && expiration > 0) { - message.getMessageProperties().setHeader("x-delay", expiration); - } - return message; - }); - } - - - /** - * 给queue发送消息 - * - * @param queueName - */ - public String receiveFromQueue(String queueName) { - return receiveFromQueue(DirectExchange.DEFAULT, queueName); - } - - /** - * 给direct交换机指定queue发送消息 - * - * @param directExchange - * @param queueName - */ - public String receiveFromQueue(DirectExchange directExchange, String queueName) { - Queue queue = new Queue(queueName); - addQueue(queue); - Binding binding = BindingBuilder.bind(queue).to(directExchange).withQueueName(); - rabbitAdmin.declareBinding(binding); - String messages = (String) rabbitTemplate.receiveAndConvert(queueName); - System.out.println("Receive:" + messages); - return messages; - } - - /** - * 创建Exchange - * - * @param exchange - */ - public void addExchange(AbstractExchange exchange) { - rabbitAdmin.declareExchange(exchange); - } - - /** - * 删除一个Exchange - * - * @param exchangeName - */ - public boolean deleteExchange(String exchangeName) { - return rabbitAdmin.deleteExchange(exchangeName); - } - - - /** - * 声明其名称自动命名的队列。它是用exclusive=true、autoDelete=true和 durable = false - * - * @return Queue - */ - public Queue addQueue() { - return rabbitAdmin.declareQueue(); - } - - /** - * 创建一个指定的Queue - * - * @param queue - * @return queueName - */ - public String addQueue(Queue queue) { - return rabbitAdmin.declareQueue(queue); - } - - /** - * 删除一个队列 - * - * @param queueName the name of the queue. - * @param unused true if the queue should be deleted only if not in use. - * @param empty true if the queue should be deleted only if empty. - */ - public void deleteQueue(String queueName, boolean unused, boolean empty) { - rabbitAdmin.deleteQueue(queueName, unused, empty); - } - - /** - * 删除一个队列 - * - * @param queueName - * @return true if the queue existed and was deleted. - */ - public boolean deleteQueue(String queueName) { - return rabbitAdmin.deleteQueue(queueName); - } - - /** - * 绑定一个队列到一个匹配型交换器使用一个routingKey - * - * @param queue - * @param exchange - * @param routingKey - */ - public void addBinding(Queue queue, TopicExchange exchange, String routingKey) { - Binding binding = BindingBuilder.bind(queue).to(exchange).with(routingKey); - rabbitAdmin.declareBinding(binding); - } - - /** - * 绑定一个Exchange到一个匹配型Exchange 使用一个routingKey - * - * @param exchange - * @param topicExchange - * @param routingKey - */ - public void addBinding(Exchange exchange, TopicExchange topicExchange, String routingKey) { - Binding binding = BindingBuilder.bind(exchange).to(topicExchange).with(routingKey); - rabbitAdmin.declareBinding(binding); - } - - /** - * 去掉一个binding - * - * @param binding - */ - public void removeBinding(Binding binding) { - rabbitAdmin.removeBinding(binding); - } - - /** - * 创建交换器 - * - * @param exchangeName - * @return - */ - public DirectExchange createExchange(String exchangeName) { - return new DirectExchange(exchangeName, true, false); - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/config/RabbitMqConfig.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/config/RabbitMqConfig.java deleted file mode 100644 index 9644dc9..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/config/RabbitMqConfig.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.config; - - -import java.util.UUID; - -import org.jeecg.boot.starter.rabbitmq.event.JeecgRemoteApplicationEvent; -import org.jeecg.common.config.mqtoken.TransmitUserTokenFilter; -import org.springframework.amqp.core.AcknowledgeMode; -import org.springframework.amqp.rabbit.connection.ConnectionFactory; -import org.springframework.amqp.rabbit.core.RabbitAdmin; -import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; -import org.springframework.amqp.support.ConsumerTagStrategy; -import org.springframework.cloud.bus.jackson.RemoteApplicationEventScan; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * 消息队列配置类 - * - * @author zyf - */ -@Configuration -@RemoteApplicationEventScan(basePackageClasses = JeecgRemoteApplicationEvent.class) -public class RabbitMqConfig { - - - @Bean - public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) { - RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); - //设置忽略声明异常 - rabbitAdmin.setIgnoreDeclarationExceptions(true); - return rabbitAdmin; - } - - /** - * 注入获取token过滤器 - * @return - */ - @Bean - public TransmitUserTokenFilter transmitUserInfoFromHttpHeader(){ - return new TransmitUserTokenFilter(); - } - - @Bean - public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) { - SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); - container.setConnectionFactory(connectionFactory); - //手动确认 - container.setAcknowledgeMode(AcknowledgeMode.MANUAL); - //当前的消费者数量 - container.setConcurrentConsumers(1); - //最大的消费者数量 - container.setMaxConcurrentConsumers(1); - //是否重回队列 - container.setDefaultRequeueRejected(true); - - //消费端的标签策略 - container.setConsumerTagStrategy(new ConsumerTagStrategy() { - @Override - public String createConsumerTag(String queue) { - return queue + "_" + UUID.randomUUID().toString(); - } - }); - return container; - } - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java deleted file mode 100644 index 2c0c2fd..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.core; - -import com.rabbitmq.client.Channel; -import lombok.extern.slf4j.Slf4j; - -import org.jeecg.boot.starter.rabbitmq.listenter.MqListener; -import org.jeecg.common.config.mqtoken.UserTokenContext; - -import java.io.IOException; - -/** - * - * @author zyf - */ -@Slf4j -public class BaseRabbiMqHandler<T> { - - private String token= UserTokenContext.getToken(); - - public void onMessage(T t, Long deliveryTag, Channel channel, MqListener mqListener) { - try { - UserTokenContext.setToken(token); - mqListener.handler(t, channel); - channel.basicAck(deliveryTag, false); - } catch (Exception e) { - log.info("接收消息失败,重新放回队列"); - try { - /** - * deliveryTag:该消息的index - * multiple:是否批量.true:将一次性拒绝所有小于deliveryTag的消息。 - * requeue:被拒绝的是否重新入队列 - */ - channel.basicNack(deliveryTag, false, true); - } catch (IOException ex) { - ex.printStackTrace(); - } - } - - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/MapMessageConverter.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/MapMessageConverter.java deleted file mode 100644 index b5f0a0b..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/MapMessageConverter.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.core; - -import org.springframework.amqp.core.Message; -import org.springframework.amqp.core.MessageProperties; -import org.springframework.amqp.support.converter.MessageConversionException; -import org.springframework.amqp.support.converter.MessageConverter; - -import java.io.ByteArrayInputStream; -import java.io.ObjectInputStream; -import java.util.HashMap; -import java.util.Map; - -public class MapMessageConverter implements MessageConverter { - @Override - public Message toMessage(Object object, MessageProperties messageProperties) throws MessageConversionException { - return new Message(object.toString().getBytes(), messageProperties); - } - - @Override - public Object fromMessage(Message message) throws MessageConversionException { - String contentType = message.getMessageProperties().getContentType(); - if (null != contentType && contentType.contains("text")) { - return new String(message.getBody()); - } else { - ObjectInputStream objInt = null; - try { - ByteArrayInputStream byteInt = new ByteArrayInputStream(message.getBody()); - objInt = new ObjectInputStream(byteInt); - //byte[]转map - Map map = (HashMap) objInt.readObject(); - return map; - } catch (Exception e) { - e.printStackTrace(); - } - } - return null; - - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/BaseApplicationEvent.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/BaseApplicationEvent.java deleted file mode 100644 index 9a996a3..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/BaseApplicationEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.event; - -import cn.hutool.core.util.ObjectUtil; - -import org.jeecg.common.util.SpringContextHolder; -import org.springframework.context.ApplicationListener; -import org.springframework.stereotype.Component; - -/** - * 监听远程事件,并分发消息到业务模块消息处理器 - */ -@Component -public class BaseApplicationEvent implements ApplicationListener<JeecgRemoteApplicationEvent> { - - @Override - public void onApplicationEvent(JeecgRemoteApplicationEvent jeecgRemoteApplicationEvent) { - EventObj eventObj = jeecgRemoteApplicationEvent.getEventObj(); - if (ObjectUtil.isNotEmpty(eventObj)) { - //获取业务模块消息处理器 - JeecgBusEventHandler busEventHandler = SpringContextHolder.getHandler(eventObj.getHandlerName(), JeecgBusEventHandler.class); - if (ObjectUtil.isNotEmpty(busEventHandler)) { - //通知业务模块 - busEventHandler.onMessage(eventObj); - } - } - } - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/EventObj.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/EventObj.java deleted file mode 100644 index 295597b..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/EventObj.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.event; - -import lombok.Data; -import org.jeecg.common.base.BaseMap; - -import java.io.Serializable; - -/** - * 远程事件数据对象 - */ -@Data -public class EventObj implements Serializable { - /** - * 数据对象 - */ - private BaseMap baseMap; - /** - * 自定义业务模块消息处理器beanName - */ - private String handlerName; -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgBusEventHandler.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgBusEventHandler.java deleted file mode 100644 index 9153054..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgBusEventHandler.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.event; - -/** - * 业务模块消息处理器接口 - */ -public interface JeecgBusEventHandler { - void onMessage(EventObj map); -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgRemoteApplicationEvent.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgRemoteApplicationEvent.java deleted file mode 100644 index 036f97b..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgRemoteApplicationEvent.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.event; - -import lombok.Data; -import org.springframework.cloud.bus.event.RemoteApplicationEvent; - -/** - * 自定义网关刷新远程事件 - * - * @author : zyf - * @date :2020-11-10 - */ -@Data -public class JeecgRemoteApplicationEvent extends RemoteApplicationEvent { - - private JeecgRemoteApplicationEvent() { - } - - private EventObj eventObj; - - public JeecgRemoteApplicationEvent(EventObj source, String originService, String destinationService) { - super(source, originService, destinationService); - this.eventObj = source; - } - - public JeecgRemoteApplicationEvent(EventObj source, String originService) { - super(source, originService, ""); - this.eventObj = source; - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java deleted file mode 100644 index 3a0f516..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.exchange; - -import org.springframework.amqp.core.CustomExchange; - -import java.util.HashMap; -import java.util.Map; - -/** - * 延迟交换器构造器 - * @author: zyf - * @date: 2019/3/8 13:31 - * @description: - */ -public class DelayExchangeBuilder { - /** - * 默认延迟消息交换器 - */ - public final static String DEFAULT_DELAY_EXCHANGE = "jeecg.delayed.exchange"; - /** - * 普通交换器 - */ - public final static String DELAY_EXCHANGE = "jeecg.direct.exchange"; - - /** - * 构建延迟消息交换器 - * @return - */ - public static CustomExchange buildExchange() { - Map<String, Object> args = new HashMap<String, Object>(); - args.put("x-delayed-type", "direct"); - return new CustomExchange(DEFAULT_DELAY_EXCHANGE, "x-delayed-message", true, false, args); - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/listenter/MqListener.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/listenter/MqListener.java deleted file mode 100644 index 6bc46a2..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/listenter/MqListener.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.jeecg.boot.starter.rabbitmq.listenter; - -import com.rabbitmq.client.Channel; - -public interface MqListener<T> { - - default void handler(T map, Channel channel) { - } - -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-seata/pom.xml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-seata/pom.xml deleted file mode 100644 index 6057384..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-seata/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>jeecg-boot-starter</artifactId> - <groupId>org.jeecgframework.boot</groupId> - <version>3.3.0</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jeecg-boot-starter-seata</artifactId> - <description>分布式事务</description> - <dependencies> - <!-- seata依赖 --> - <dependency> - <groupId>io.seata</groupId> - <artifactId>seata-spring-boot-starter</artifactId> - <version>1.4.2</version> - </dependency> - <dependency> - <groupId>com.alibaba.nacos</groupId> - <artifactId>nacos-client</artifactId> - <version>1.3.3</version> - </dependency> - - </dependencies> -</project> \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/pom.xml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/pom.xml deleted file mode 100644 index bb8f332..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>jeecg-boot-starter</artifactId> - <groupId>org.jeecgframework.boot</groupId> - <version>3.3.0</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jeecg-boot-starter-shardingsphere</artifactId> - <description>分库分表</description> - <dependencies> - <!-- 动态数据源 --> - <dependency> - <groupId>com.baomidou</groupId> - <artifactId>dynamic-datasource-spring-boot-starter</artifactId> - <version>${dynamic-datasource-spring-boot-starter.version}</version> - </dependency> - <!-- 分库分表 --> - <dependency> - <groupId>org.apache.shardingsphere</groupId> - <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> - <version>5.0.0</version> - </dependency> - </dependencies> - -</project> \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/java/org/jeecg/boot/shardingsphere/config/DataSourceConfiguration.java b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/java/org/jeecg/boot/shardingsphere/config/DataSourceConfiguration.java deleted file mode 100644 index 8d87329..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/java/org/jeecg/boot/shardingsphere/config/DataSourceConfiguration.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.jeecg.boot.shardingsphere.config; - -import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; -import com.baomidou.dynamic.datasource.provider.AbstractDataSourceProvider; -import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties; -import org.springframework.boot.SpringBootConfiguration; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Lazy; -import org.springframework.context.annotation.Primary; - -import javax.annotation.Resource; -import javax.sql.DataSource; -import java.util.Map; - -/** - * 分库分表数据源配置 - * @author zyf - */ -@Configuration -@AutoConfigureBefore({DynamicDataSourceAutoConfiguration.class, SpringBootConfiguration.class}) -public class DataSourceConfiguration { - /** - * 分表数据源名称 - */ - public static final String SHARDING_DATA_SOURCE_NAME = "sharding"; - /** - * 动态数据源配置项 - */ - @Resource - private DynamicDataSourceProperties dynamicDataSourceProperties; - - @Lazy - @Resource - DataSource shardingDataSource; - - /** - * 将shardingDataSource放到了多数据源(dataSourceMap)中 - * 注意有个版本的bug,3.1.1版本 不会进入loadDataSources 方法,这样就一直造成数据源注册失败 - */ - @Bean - public DynamicDataSourceProvider dynamicDataSourceProvider() { - Map<String, DataSourceProperty> datasourceMap = dynamicDataSourceProperties.getDatasource(); - return new AbstractDataSourceProvider() { - @Override - public Map<String, DataSource> loadDataSources() { - Map<String, DataSource> dataSourceMap = createDataSourceMap(datasourceMap); - // 将 shardingjdbc 管理的数据源也交给动态数据源管理 - dataSourceMap.put(SHARDING_DATA_SOURCE_NAME, shardingDataSource); - return dataSourceMap; - } - }; - } - - /** - * 将动态数据源设置为首选的 - * 当spring存在多个数据源时, 自动注入的是首选的对象 - * 设置为主要的数据源之后,就可以支持shardingjdbc原生的配置方式了 - * - * @return - */ - @Primary - @Bean - public DataSource dataSource(DynamicDataSourceProvider dynamicDataSourceProvider) { - DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource(); - dataSource.setPrimary(dynamicDataSourceProperties.getPrimary()); - dataSource.setStrict(dynamicDataSourceProperties.getStrict()); - dataSource.setStrategy(dynamicDataSourceProperties.getStrategy()); - dataSource.setProvider(dynamicDataSourceProvider); - dataSource.setP6spy(dynamicDataSourceProperties.getP6spy()); - dataSource.setSeata(dynamicDataSourceProperties.getSeata()); - return dataSource; - } -} diff --git a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/resources/application.yml b/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/resources/application.yml deleted file mode 100644 index c343752..0000000 --- a/jeecg-boot/jeecg-boot-starter/jeecg-boot-starter-shardingsphere/src/main/resources/application.yml +++ /dev/null @@ -1,3 +0,0 @@ -spring: - profiles: - active: sharding \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-starter/pom.xml b/jeecg-boot/jeecg-boot-starter/pom.xml deleted file mode 100644 index 1d24580..0000000 --- a/jeecg-boot/jeecg-boot-starter/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ -<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>org.jeecgframework.boot</groupId> - <artifactId>jeecg-boot-parent</artifactId> - <version>3.3.0</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>jeecg-boot-starter</artifactId> - <packaging>pom</packaging> - - <properties> - <java.version>1.8</java.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> - - <modules> - <module>jeecg-boot-starter-cloud</module> - <module>jeecg-boot-starter-job</module> - <module>jeecg-boot-starter-lock</module> - <module>jeecg-boot-starter-rabbitmq</module> - <module>jeecg-boot-starter-shardingsphere</module> - <module>jeecg-boot-starter-seata</module> - </modules> - <dependencies> - <!--jeecg-tools--> - <dependency> - <groupId>org.jeecgframework.boot</groupId> - <artifactId>jeecg-boot-base-tools</artifactId> - </dependency> - <!--加载配置信息--> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-autoconfigure</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-configuration-processor</artifactId> - <optional>true</optional> - </dependency> - </dependencies> - - - <build> - <plugins> - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>1.8</source> - <target>1.8</target> - <encoding>UTF-8</encoding> - </configuration> - </plugin> - </plugins> - </build> -</project> \ No newline at end of file -- libgit2 0.22.2