diff --git a/.env b/.env index cabce62..1699138 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ # ui项目的根路径 -UI_BASE_DIR=/Users/dingzhiwei/work/idea_wk/gitee_wk \ No newline at end of file +UI_BASE_DIR=/Users/dingzhiwei/work/dev/jeepay-open diff --git a/README.md b/README.md index 0f83067..adf668f 100644 --- a/README.md +++ b/README.md @@ -296,7 +296,36 @@ jeepay-open/ ### 构建前准备 -#### 1. 编译后端 JAR +#### 1. 配置 Docker 国内镜像加速(强烈建议) + +国内网络拉取 Docker Hub 镜像较慢或被墙,建议配置多个镜像加速源(单个源随时可能失效,Docker 会自动 fallback)。 + +Docker daemon 配置示例: + +```json +{ + "registry-mirrors": [ + "https://docker.1ms.run", + "https://docker.m.daocloud.io", + "https://docker.xuanyuan.me", + "https://hub.rat.dev", + "https://docker.1panel.live" + ] +} +``` + +配置位置: + +- **Linux**:`/etc/docker/daemon.json`,修改后执行 `sudo systemctl restart docker` +- **Docker Desktop(macOS / Windows)**:Settings -> Docker Engine,写入上述 JSON 后点击 Apply & Restart + +验证是否生效: + +```bash +docker info | grep -A 5 "Registry Mirrors" +``` + +#### 2. 编译后端 JAR 在 `jeepay` 根目录执行: @@ -310,14 +339,24 @@ mvn clean package -DskipTests - `jeepay-manager/target/jeepay-manager.jar` - `jeepay-merchant/target/jeepay-merchant.jar` -#### 2. 准备前端代码 +#### 3. 准备前端代码 确保 `jeepay-ui` 仓库已拉取到本地,且目录结构满足上面的要求。 ### 启动方式 ```bash +# 首次启动(编译镜像 + 启动) docker compose up -d --build + +# 后续启动(跳过编译) +docker compose up -d + +# 仅重新编译后端服务 +docker compose build payment manager merchant + +# 重启某个服务 +docker compose restart payment ``` ### 启动前校验 @@ -328,27 +367,87 @@ docker compose config ### 默认暴露端口 -| 组件 | 端口 | -|---|---| -| MySQL | `3306` | -| Redis | `6380` | -| RocketMQ NameServer | `9876` | -| RocketMQ Broker | `10909` / `10911` / `10912` | -| payment | `9216` | -| manager | `9217` | -| merchant | `9218` | -| manager UI | `9227` | -| merchant UI | `9228` | -| cashier UI | `9226` | +| 组件 | 端口 | 说明 | +|---|---|---| +| MySQL | `13306` | 映射宿主机 13306,避免与本地 MySQL 冲突 | +| Redis | `6380` | | +| RocketMQ NameServer | `9876` | | +| RocketMQ Broker | `10909` / `10911` / `10912` | | +| payment | `9216` | 支付网关 | +| manager | `9217` | 运营平台后端 | +| merchant | `9218` | 商户系统后端 | +| manager UI | `9227` | 运营平台前端 | +| merchant UI | `9228` | 商户系统前端 | +| cashier UI | `9226` | 收银台前端 | -### 说明 +### 默认账号 -- Compose 默认使用 RocketMQ,已补齐 `rocketmq-namesrv` 与 `rocketmq-broker`,并统一设置 `restart: always`,用于提升 Docker 部署的自动恢复能力。 -- `conf/payment`、`conf/manager`、`conf/merchant` 已默认切换为 `rocketMQ`,同时将 Docker 场景下的 MySQL / Redis 主机名修正为 `mysql`、`redis`。 -- Java 服务挂载的配置文件路径已与模块 Dockerfile 对齐。 -- Compose 当前默认使用模块内 Dockerfile 构建 `payment / manager / merchant`,不再错误指向根目录不存在的 Dockerfile。 -- 如需回退到 ActiveMQ 或切换 RabbitMQ,需要同时调整 `docker-compose.yml` 与 `conf/*.yml` 中对应 MQ 配置。 -- 若前端镜像构建失败,优先检查 `jeepay-ui` 是否存在,以及 Node 依赖是否可正常安装。 +| 平台 | 地址 | 用户名 | 密码 | +|---|---|---|---| +| 运营平台 | http://localhost:9227 | jeepay | jeepay123 | +| 商户系统 | http://localhost:9228 | jeepay | jeepay123 | + +### 核心组件版本 + +| 组件 | 版本 | 说明 | +|---|---|---| +| RocketMQ Server | `5.3.1` | NameServer + Broker | +| rocketmq-spring-boot-starter | `2.3.5` | Spring Boot 集成,内置 client 5.3.2 | +| MySQL | `8` | | +| Redis | `latest` | | +| Java 基础镜像 | `eclipse-temurin:17-jre` | openjdk 官方镜像已停止维护 | + +### 配置说明 + +- Compose 默认使用 **RocketMQ** 作为消息队列,已配置 `rocketmq-namesrv` 与 `rocketmq-broker`。 +- `conf/payment`、`conf/manager`、`conf/merchant` 已默认切换为 `rocketMQ`,MySQL / Redis 主机名配置为容器内网名 `mysql`、`redis`。 +- MySQL 映射为 `13306:3306`,避免与宿主机本地 MySQL 冲突;容器内部服务仍通过 `mysql:3306` 通信。 +- Java 服务的配置文件通过 volume 挂载,修改 `conf/` 目录下的 yml 后重启对应服务即可生效。 +- 如需回退到 ActiveMQ 或切换 RabbitMQ,需同时调整 `docker-compose.yml` 与 `conf/*.yml`。 + +### 启动后验证 + +```bash +# 查看所有容器状态 +docker compose ps + +# 查看核心服务日志 +docker compose logs --tail=100 payment manager merchant rocketmq-namesrv rocketmq-broker + +# 确认 RocketMQ Broker 启动成功(应看到 "boot success") +docker logs jeepay-rocketmq-broker 2>&1 | grep "boot success" +``` + +### 常见问题 + +#### RocketMQ Broker 启动失败(NullPointerException) + +如果 Broker 日志中出现 `ScheduleMessageService.configFilePath` 相关 NPE,通常是 Docker named volume 的权限问题。RocketMQ 5.x 镜像以 `rocketmq`(uid=3000)用户运行,而 Docker 创建的 volume 默认 `root` 权限。 + +Compose 中已通过 `user: "0:0"` 解决此问题。如果手动部署遇到此问题,可执行: + +```bash +docker run --rm -u root -v jeepay_rocketmq_broker_store:/data alpine chown -R 3000:3000 /data +docker run --rm -u root -v jeepay_rocketmq_broker_logs:/data alpine chown -R 3000:3000 /data +``` + +#### Apple Silicon(M1/M2/M3)注意事项 + +RocketMQ 官方镜像仅提供 `linux/amd64` 版本,在 Apple Silicon 上通过 Rosetta 2 模拟运行,启动较慢属于正常现象。确保 Docker Desktop 已开启 "Use Rosetta for x86_64/amd64 emulation on Apple Silicon"。 + +#### 前端镜像构建失败 + +优先检查: +- `jeepay-ui` 目录是否存在且在正确位置 +- Node.js 依赖是否可正常安装(npm 源是否可达) + +#### 登录提示"认证服务出现异常" + +检查 `conf/*/application.yml` 中的数据库连接配置是否与 `docker-compose.yml` 中的 MySQL 密码一致。Compose 默认 root 密码为 `rootroot`。 + +#### 镜像拉取失败(403 Forbidden) + +镜像加速源可能失效,建议配置多个加速源(参见上方"配置 Docker 国内镜像加速"),Docker 会自动尝试下一个。 --- diff --git a/conf/devCommons/config/application.yml b/conf/devCommons/config/application.yml index 6760d8b..5159fc7 100644 --- a/conf/devCommons/config/application.yml +++ b/conf/devCommons/config/application.yml @@ -5,6 +5,8 @@ server: servlet: context-path: / #设置应用的目录. 前缀需要带/, 无需设置后缀, 示例 【 /xxx 】 or 【 / 】 spring: + application: + name: jeepay main: allow-circular-references: true servlet: @@ -123,5 +125,12 @@ isys: access-key-secret: SECRET_SECRET_SECRET #AccessKeySecret mq: - vender: activeMQ # 切换MQ厂商, 支持:【 activeMQ rabbitMQ rocketMQ aliYunRocketMQ 】, 需正确配置 【对应的yml参数】 和 【jeepay-components-mq项目下pom.xml中的依赖包】。 + vender: rocketMQ # 切换MQ厂商, 支持:【 activeMQ rabbitMQ rocketMQ aliYunRocketMQ 】, 需正确配置 【对应的yml参数】 和 【jeepay-components-mq项目下pom.xml中的依赖包】。 +rocketmq: + name-server: 127.0.0.1:9876 + producer: + group: PID_JEEPAY_DEV + send-message-timeout: 10000 + retry-times-when-send-failed: 2 + retry-times-when-send-async-failed: 2 diff --git a/conf/manager/application.yml b/conf/manager/application.yml index 64ff7e5..6abe0d1 100644 --- a/conf/manager/application.yml +++ b/conf/manager/application.yml @@ -14,6 +14,8 @@ server: servlet: context-path: / #设置应用的目录. 前缀需要带/, 无需设置后缀, 示例 【 /xxx 】 or 【 / 】 spring: + application: + name: jeepay-manager servlet: multipart: enabled: true #是否启用http上传处理 @@ -32,7 +34,7 @@ spring: # yml填写url连接串, 无需将&符号进行转义 url: jdbc:mysql://mysql:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true username: root - password: jeepaydb123456 + password: rootroot druid: # 连接池配置项 initial-size: 5 #初始化时建立物理连接的个数 @@ -153,5 +155,7 @@ isys: rocketmq: name-server: rocketmq-namesrv:9876 producer: - group: JEEPAY-GROUP - + group: PID_JEEPAY_MANAGER + send-message-timeout: 10000 + retry-times-when-send-failed: 2 + retry-times-when-send-async-failed: 2 diff --git a/conf/merchant/application.yml b/conf/merchant/application.yml index 0084704..f378417 100644 --- a/conf/merchant/application.yml +++ b/conf/merchant/application.yml @@ -14,6 +14,8 @@ server: servlet: context-path: / #设置应用的目录. 前缀需要带/, 无需设置后缀, 示例 【 /xxx 】 or 【 / 】 spring: + application: + name: jeepay-merchant servlet: multipart: enabled: true #是否启用http上传处理 @@ -32,7 +34,7 @@ spring: # yml填写url连接串, 无需将&符号进行转义 url: jdbc:mysql://mysql:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true username: root - password: jeepaydb123456 + password: rootroot druid: # 连接池配置项 initial-size: 5 #初始化时建立物理连接的个数 @@ -153,5 +155,7 @@ isys: rocketmq: name-server: rocketmq-namesrv:9876 producer: - group: JEEPAY-GROUP - + group: PID_JEEPAY_MERCHANT + send-message-timeout: 10000 + retry-times-when-send-failed: 2 + retry-times-when-send-async-failed: 2 diff --git a/conf/payment/application.yml b/conf/payment/application.yml index 221b1e0..9aeec1f 100644 --- a/conf/payment/application.yml +++ b/conf/payment/application.yml @@ -14,6 +14,8 @@ server: servlet: context-path: / #设置应用的目录. 前缀需要带/, 无需设置后缀, 示例 【 /xxx 】 or 【 / 】 spring: + application: + name: jeepay-payment servlet: multipart: enabled: true #是否启用http上传处理 @@ -32,7 +34,7 @@ spring: # yml填写url连接串, 无需将&符号进行转义 url: jdbc:mysql://mysql:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true username: root - password: jeepaydb123456 + password: rootroot druid: # 连接池配置项 initial-size: 5 #初始化时建立物理连接的个数 @@ -156,5 +158,7 @@ isys: rocketmq: name-server: rocketmq-namesrv:9876 producer: - group: JEEPAY-GROUP - + group: PID_JEEPAY_PAYMENT + send-message-timeout: 10000 + retry-times-when-send-failed: 2 + retry-times-when-send-async-failed: 2 diff --git a/docker-compose.yml b/docker-compose.yml index ccd9f9e..43ee719 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,7 +20,13 @@ services: MYSQL_USER: "jeepay" MYSQL_PASSWORD: "jeepay" ports: - - "3306:3306" + - "13306:3306" + healthcheck: + test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent"] + interval: 10s + timeout: 5s + retries: 12 + start_period: 20s volumes: - mysql:/var/lib/mysql - ./docs/sql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro @@ -30,13 +36,24 @@ services: # 使用 RocketMQ 作为默认 MQ 方案 rocketmq-namesrv: - image: apache/rocketmq:4.9.8 + image: apache/rocketmq:5.3.1 hostname: rocketmq-namesrv container_name: jeepay-rocketmq-namesrv restart: always + user: "0:0" ports: - "9876:9876" + environment: + # 开发环境降低 NameServer 内存占用 + HEAP_OPTS: "-Xms256m -Xmx256m -Xmn128m" command: sh mqnamesrv + healthcheck: + # arm64 模拟 amd64 时 bash 启动较慢,需增大超时 + test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/localhost/9876'"] + interval: 15s + timeout: 15s + retries: 10 + start_period: 40s volumes: - rocketmq_namesrv_logs:/home/rocketmq/logs networks: @@ -44,23 +61,25 @@ services: ipv4_address: 172.20.0.11 rocketmq-broker: - image: apache/rocketmq:4.9.8 + image: apache/rocketmq:5.3.1 hostname: rocketmq-broker container_name: jeepay-rocketmq-broker restart: always + # Docker 创建的 named volume 默认 root 权限,而镜像以 rocketmq(uid=3000) 运行,需要提权 + user: "0:0" ports: - "10909:10909" - "10911:10911" - "10912:10912" environment: NAMESRV_ADDR: rocketmq-namesrv:9876 - command: sh mqbroker -n rocketmq-namesrv:9876 -c /home/rocketmq/rocketmq-4.9.8/conf/broker.conf + command: sh mqbroker -n rocketmq-namesrv:9876 depends_on: - - rocketmq-namesrv + rocketmq-namesrv: + condition: service_healthy volumes: - rocketmq_broker_logs:/home/rocketmq/logs - rocketmq_broker_store:/home/rocketmq/store - - ./docker/rocketmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.8/conf/broker.conf:ro networks: jeepay: ipv4_address: 172.20.0.13 @@ -115,6 +134,12 @@ services: image: redis:latest ports: - "6380:6379" + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 12 + start_period: 10s volumes: - redis:/data networks: @@ -132,9 +157,12 @@ services: ports: - "9216:9216" depends_on: - - mysql - - redis - - rocketmq-broker + mysql: + condition: service_healthy + redis: + condition: service_healthy + rocketmq-broker: + condition: service_started volumes: - ./logs/payment:/jeepayhomes/service/logs - ./conf/payment/application.yml:/jeepayhomes/service/app/application.yml @@ -153,9 +181,12 @@ services: ports: - "9217:9217" depends_on: - - mysql - - redis - - rocketmq-broker + mysql: + condition: service_healthy + redis: + condition: service_healthy + rocketmq-broker: + condition: service_started volumes: - ./logs/manager:/jeepayhomes/service/logs - ./conf/manager/application.yml:/jeepayhomes/service/app/application.yml @@ -174,9 +205,12 @@ services: ports: - "9218:9218" depends_on: - - mysql - - redis - - rocketmq-broker + mysql: + condition: service_healthy + redis: + condition: service_healthy + rocketmq-broker: + condition: service_started volumes: - ./logs/merchant:/jeepayhomes/service/logs - ./conf/merchant/application.yml:/jeepayhomes/service/app/application.yml diff --git a/docker/rocketmq/broker/conf/broker.conf b/docker/rocketmq/broker/conf/broker.conf index a8f04e2..99ef4df 100644 --- a/docker/rocketmq/broker/conf/broker.conf +++ b/docker/rocketmq/broker/conf/broker.conf @@ -1,7 +1,17 @@ -brokerClusterName = DefaultCluster -brokerName = broker-a -brokerId = 0 -deleteWhen = 04 -fileReservedTime = 48 -brokerRole = ASYNC_MASTER -flushDiskType = ASYNC_FLUSH +brokerClusterName=DefaultCluster +brokerName=broker-a +brokerId=0 +deleteWhen=04 +fileReservedTime=48 +brokerRole=ASYNC_MASTER +flushDiskType=ASYNC_FLUSH +brokerIP1=172.20.0.13 +namesrvAddr=rocketmq-namesrv:9876 +autoCreateTopicEnable=true +autoCreateSubscriptionGroup=true +storePathRootDir=/home/rocketmq/store +storePathCommitLog=/home/rocketmq/store/commitlog +storePathConsumeQueue=/home/rocketmq/store/consumequeue +storePathIndex=/home/rocketmq/store/index +storeCheckpoint=/home/rocketmq/store/checkpoint +abortFile=/home/rocketmq/store/abort diff --git a/jeepay-components/jeepay-components-mq/pom.xml b/jeepay-components/jeepay-components-mq/pom.xml index 2310866..a8b7f67 100644 --- a/jeepay-components/jeepay-components-mq/pom.xml +++ b/jeepay-components/jeepay-components-mq/pom.xml @@ -53,10 +53,16 @@ + org.apache.rocketmq rocketmq-spring-boot-starter - provided + + + + javax.annotation + javax.annotation-api @@ -66,6 +72,12 @@ provided + + org.springframework.boot + spring-boot-starter-test + test + + diff --git a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/config/JeepayRocketMqAutoConfiguration.java b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/config/JeepayRocketMqAutoConfiguration.java new file mode 100644 index 0000000..3709cbe --- /dev/null +++ b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/config/JeepayRocketMqAutoConfiguration.java @@ -0,0 +1,44 @@ +package com.jeequan.jeepay.components.mq.vender.rocketmq.config; + +import com.jeequan.jeepay.components.mq.constant.MQVenderCS; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.SmartInitializingSingleton; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.util.Assert; +import org.springframework.util.StringUtils; + +@Configuration +@ConditionalOnClass(RocketMQTemplate.class) +@ConditionalOnProperty(name = MQVenderCS.YML_VENDER_KEY, havingValue = MQVenderCS.ROCKET_MQ) +public class JeepayRocketMqAutoConfiguration { + + private static final Logger log = LoggerFactory.getLogger(JeepayRocketMqAutoConfiguration.class); + + @Bean + public SmartInitializingSingleton jeepayRocketMqSanityCheck(Environment environment) { + return () -> { + String nameServer = environment.getProperty("rocketmq.name-server"); + String applicationName = environment.getProperty("spring.application.name"); + String producerGroup = environment.getProperty("rocketmq.producer.group"); + + Assert.hasText(nameServer, + "When isys.mq.vender=rocketMQ, property 'rocketmq.name-server' must be configured."); + Assert.hasText(producerGroup, + "When isys.mq.vender=rocketMQ, property 'rocketmq.producer.group' must be configured."); + + if (!StringUtils.hasText(applicationName)) { + log.warn("spring.application.name is empty, RocketMQ consumer groups will use fallback naming."); + return; + } + + log.info("RocketMQ integration enabled. applicationName={}, nameServer={}, producerGroup={}", + applicationName, nameServer, producerGroup); + }; + } +} diff --git a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/config/JeepayRocketMqEnvironmentPostProcessor.java b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/config/JeepayRocketMqEnvironmentPostProcessor.java new file mode 100644 index 0000000..9d7c362 --- /dev/null +++ b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/config/JeepayRocketMqEnvironmentPostProcessor.java @@ -0,0 +1,60 @@ +package com.jeequan.jeepay.components.mq.vender.rocketmq.config; + +import com.jeequan.jeepay.components.mq.constant.MQVenderCS; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.env.EnvironmentPostProcessor; +import org.springframework.core.Ordered; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.MapPropertySource; +import org.springframework.util.StringUtils; + +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; + +/** + * Populate production-safe RocketMQ defaults before RocketMQAutoConfiguration runs. + */ +public class JeepayRocketMqEnvironmentPostProcessor implements EnvironmentPostProcessor, Ordered { + + private static final String PROPERTY_SOURCE_NAME = "jeepayRocketMqDefaults"; + private static final String APPLICATION_NAME_KEY = "spring.application.name"; + private static final String PRODUCER_GROUP_KEY = "rocketmq.producer.group"; + + @Override + public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { + if (!MQVenderCS.ROCKET_MQ.equals(environment.getProperty(MQVenderCS.YML_VENDER_KEY))) { + return; + } + + Map defaults = new LinkedHashMap<>(); + String applicationName = environment.getProperty(APPLICATION_NAME_KEY); + + if (!StringUtils.hasText(applicationName)) { + applicationName = "jeepay"; + defaults.put(APPLICATION_NAME_KEY, applicationName); + } + + if (!StringUtils.hasText(environment.getProperty(PRODUCER_GROUP_KEY))) { + defaults.put(PRODUCER_GROUP_KEY, buildProducerGroup(applicationName)); + } + + defaults.putIfAbsent("rocketmq.producer.send-message-timeout", "10000"); + defaults.putIfAbsent("rocketmq.producer.retry-times-when-send-failed", "2"); + defaults.putIfAbsent("rocketmq.producer.retry-times-when-send-async-failed", "2"); + + if (!defaults.isEmpty()) { + environment.getPropertySources().addLast(new MapPropertySource(PROPERTY_SOURCE_NAME, defaults)); + } + } + + static String buildProducerGroup(String applicationName) { + String normalized = applicationName.toUpperCase(Locale.ROOT).replaceAll("[^A-Z0-9]+", "_"); + return "PID_JEEPAY_" + normalized; + } + + @Override + public int getOrder() { + return Ordered.HIGHEST_PRECEDENCE; + } +} diff --git a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/CleanMchLoginAuthCacheRocketMQReceiver.java b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/CleanMchLoginAuthCacheRocketMQReceiver.java index 827449d..5f5b209 100644 --- a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/CleanMchLoginAuthCacheRocketMQReceiver.java +++ b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/CleanMchLoginAuthCacheRocketMQReceiver.java @@ -36,7 +36,8 @@ import org.springframework.stereotype.Component; @Component @ConditionalOnProperty(name = MQVenderCS.YML_VENDER_KEY, havingValue = MQVenderCS.ROCKET_MQ) @ConditionalOnBean(CleanMchLoginAuthCacheMQ.IMQReceiver.class) -@RocketMQMessageListener(topic = CleanMchLoginAuthCacheMQ.MQ_NAME, consumerGroup = CleanMchLoginAuthCacheMQ.MQ_NAME) +@RocketMQMessageListener(topic = CleanMchLoginAuthCacheMQ.MQ_NAME, + consumerGroup = "${spring.application.name:jeepay}_" + CleanMchLoginAuthCacheMQ.MQ_NAME) public class CleanMchLoginAuthCacheRocketMQReceiver implements IMQMsgReceiver, RocketMQListener { @Autowired diff --git a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderDivisionRocketMQReceiver.java b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderDivisionRocketMQReceiver.java index 5cee1cd..566b35a 100644 --- a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderDivisionRocketMQReceiver.java +++ b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderDivisionRocketMQReceiver.java @@ -37,7 +37,8 @@ import org.springframework.stereotype.Component; @Component @ConditionalOnProperty(name = MQVenderCS.YML_VENDER_KEY, havingValue = MQVenderCS.ROCKET_MQ) @ConditionalOnBean(PayOrderDivisionMQ.IMQReceiver.class) -@RocketMQMessageListener(topic = PayOrderDivisionMQ.MQ_NAME, consumerGroup = PayOrderDivisionMQ.MQ_NAME) +@RocketMQMessageListener(topic = PayOrderDivisionMQ.MQ_NAME, + consumerGroup = "${spring.application.name:jeepay}_" + PayOrderDivisionMQ.MQ_NAME) public class PayOrderDivisionRocketMQReceiver implements IMQMsgReceiver, RocketMQListener { @Autowired diff --git a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderMchNotifyRocketMQReceiver.java b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderMchNotifyRocketMQReceiver.java index 78999c9..13ea1a7 100644 --- a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderMchNotifyRocketMQReceiver.java +++ b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderMchNotifyRocketMQReceiver.java @@ -38,7 +38,8 @@ import org.springframework.stereotype.Component; @Component @ConditionalOnProperty(name = MQVenderCS.YML_VENDER_KEY, havingValue = MQVenderCS.ROCKET_MQ) @ConditionalOnBean(PayOrderMchNotifyMQ.IMQReceiver.class) -@RocketMQMessageListener(topic = PayOrderMchNotifyMQ.MQ_NAME, consumerGroup = PayOrderMchNotifyMQ.MQ_NAME) +@RocketMQMessageListener(topic = PayOrderMchNotifyMQ.MQ_NAME, + consumerGroup = "${spring.application.name:jeepay}_" + PayOrderMchNotifyMQ.MQ_NAME) public class PayOrderMchNotifyRocketMQReceiver implements IMQMsgReceiver, RocketMQListener { @Autowired diff --git a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderReissueRocketMQReceiver.java b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderReissueRocketMQReceiver.java index 89f9921..63113a2 100644 --- a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderReissueRocketMQReceiver.java +++ b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/PayOrderReissueRocketMQReceiver.java @@ -38,7 +38,8 @@ import org.springframework.stereotype.Component; @Component @ConditionalOnProperty(name = MQVenderCS.YML_VENDER_KEY, havingValue = MQVenderCS.ROCKET_MQ) @ConditionalOnBean(PayOrderReissueMQ.IMQReceiver.class) -@RocketMQMessageListener(topic = PayOrderReissueMQ.MQ_NAME, consumerGroup = PayOrderReissueMQ.MQ_NAME) +@RocketMQMessageListener(topic = PayOrderReissueMQ.MQ_NAME, + consumerGroup = "${spring.application.name:jeepay}_" + PayOrderReissueMQ.MQ_NAME) public class PayOrderReissueRocketMQReceiver implements IMQMsgReceiver, RocketMQListener { @Autowired diff --git a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/ResetAppConfigRocketMQReceiver.java b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/ResetAppConfigRocketMQReceiver.java index d56ed9e..965facb 100644 --- a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/ResetAppConfigRocketMQReceiver.java +++ b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/ResetAppConfigRocketMQReceiver.java @@ -37,7 +37,9 @@ import org.springframework.stereotype.Component; @Component @ConditionalOnProperty(name = MQVenderCS.YML_VENDER_KEY, havingValue = MQVenderCS.ROCKET_MQ) @ConditionalOnBean(ResetAppConfigMQ.IMQReceiver.class) -@RocketMQMessageListener(topic = ResetAppConfigMQ.MQ_NAME, consumerGroup = ResetAppConfigMQ.MQ_NAME, messageModel = MessageModel.BROADCASTING) +@RocketMQMessageListener(topic = ResetAppConfigMQ.MQ_NAME, + consumerGroup = "${spring.application.name:jeepay}_" + ResetAppConfigMQ.MQ_NAME, + messageModel = MessageModel.BROADCASTING) public class ResetAppConfigRocketMQReceiver implements IMQMsgReceiver, RocketMQListener { @Autowired diff --git a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/ResetIsvMchAppInfoRocketMQReceiver.java b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/ResetIsvMchAppInfoRocketMQReceiver.java index eaae660..ee657f3 100644 --- a/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/ResetIsvMchAppInfoRocketMQReceiver.java +++ b/jeepay-components/jeepay-components-mq/src/main/java/com/jeequan/jeepay/components/mq/vender/rocketmq/receive/ResetIsvMchAppInfoRocketMQReceiver.java @@ -37,7 +37,9 @@ import org.springframework.stereotype.Component; @Component @ConditionalOnProperty(name = MQVenderCS.YML_VENDER_KEY, havingValue = MQVenderCS.ROCKET_MQ) @ConditionalOnBean(ResetIsvMchAppInfoConfigMQ.IMQReceiver.class) -@RocketMQMessageListener(topic = ResetIsvMchAppInfoConfigMQ.MQ_NAME, consumerGroup = ResetIsvMchAppInfoConfigMQ.MQ_NAME, messageModel = MessageModel.BROADCASTING) +@RocketMQMessageListener(topic = ResetIsvMchAppInfoConfigMQ.MQ_NAME, + consumerGroup = "${spring.application.name:jeepay}_" + ResetIsvMchAppInfoConfigMQ.MQ_NAME, + messageModel = MessageModel.BROADCASTING) public class ResetIsvMchAppInfoRocketMQReceiver implements IMQMsgReceiver, RocketMQListener { @Autowired diff --git a/jeepay-components/jeepay-components-mq/src/main/resources/META-INF/spring.factories b/jeepay-components/jeepay-components-mq/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..e4e2b13 --- /dev/null +++ b/jeepay-components/jeepay-components-mq/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.env.EnvironmentPostProcessor=\ +com.jeequan.jeepay.components.mq.vender.rocketmq.config.JeepayRocketMqEnvironmentPostProcessor diff --git a/jeepay-manager/Dockerfile b/jeepay-manager/Dockerfile index d7f2171..a271ae8 100644 --- a/jeepay-manager/Dockerfile +++ b/jeepay-manager/Dockerfile @@ -4,8 +4,8 @@ # ------ START ------ -# 基础镜像来自: https://hub.docker.com/ 官方OFFICIAL -FROM openjdk:17 +# Eclipse Temurin JRE 17(openjdk 官方镜像已停止维护) +FROM eclipse-temurin:17-jre MAINTAINER Terrfly diff --git a/jeepay-manager/src/main/resources/application.yml b/jeepay-manager/src/main/resources/application.yml index c79ae5d..92668a5 100644 --- a/jeepay-manager/src/main/resources/application.yml +++ b/jeepay-manager/src/main/resources/application.yml @@ -2,6 +2,8 @@ server: port: 9217 #设置端口 spring: + application: + name: jeepay-manager data: redis: database: 1 #1库:运营平台 #2库:商户系统 #3库:支付网关 diff --git a/jeepay-merchant/Dockerfile b/jeepay-merchant/Dockerfile index d43a0c1..da311e5 100644 --- a/jeepay-merchant/Dockerfile +++ b/jeepay-merchant/Dockerfile @@ -4,8 +4,8 @@ # ------ START ------ -# 基础镜像来自: https://hub.docker.com/ 官方OFFICIAL -FROM openjdk:17 +# Eclipse Temurin JRE 17(openjdk 官方镜像已停止维护) +FROM eclipse-temurin:17-jre MAINTAINER Terrfly diff --git a/jeepay-merchant/src/main/resources/application.yml b/jeepay-merchant/src/main/resources/application.yml index a83d538..4f151f1 100644 --- a/jeepay-merchant/src/main/resources/application.yml +++ b/jeepay-merchant/src/main/resources/application.yml @@ -2,6 +2,8 @@ server: port: 9218 #设置端口 spring: + application: + name: jeepay-merchant data: redis: database: 2 #1库:运营平台 #2库:商户系统 #3库:支付网关 diff --git a/jeepay-payment/Dockerfile b/jeepay-payment/Dockerfile index aa672a4..de8d266 100644 --- a/jeepay-payment/Dockerfile +++ b/jeepay-payment/Dockerfile @@ -4,8 +4,8 @@ # ------ START ------ -# 基础镜像来自: https://hub.docker.com/ 官方OFFICIAL -FROM openjdk:17 +# Eclipse Temurin JRE 17(openjdk 官方镜像已停止维护) +FROM eclipse-temurin:17-jre MAINTAINER Terrfly diff --git a/jeepay-payment/src/main/resources/application.yml b/jeepay-payment/src/main/resources/application.yml index bb58440..1ee60d7 100644 --- a/jeepay-payment/src/main/resources/application.yml +++ b/jeepay-payment/src/main/resources/application.yml @@ -2,6 +2,8 @@ server: port: 9216 #设置端口 spring: + application: + name: jeepay-payment data: redis: database: 3 #1库:运营平台 #2库:商户系统 #3库:支付网关