Skip to content

PowerJob(分布式任务调度)

本项目的 PowerJob 由两部分组成:

  1. 调度中心(Console / Server)mms-zoom/mms-powerjobPowerJobServerApplication,默认 7700
  2. 业务 Workermms-admin 作为 Worker 接入(配置项 powerjob.worker.*),并在业务模块中编写任务处理器

1) 调度中心(mms-powerjob)

启动入口与端口

  • 启动类:mms/mms-zoom/mms-powerjob/src/main/java/com/sxpcwlkj/PowerJobServerApplication.java
  • 端口:mms-zoom/mms-powerjob/src/main/resources/application.ymlserver.port: 7700
  • 组件端口(同文件 oms.*):常见为 10010(HTTP)与 10086(AKKA),以实际配置为准

数据库

application-local.yml 默认把 PowerJob 表建在 MySQL(默认库 mms,表前缀 pj_):

  • POWERJOB_DB_URL(默认 jdbc:mysql://localhost:3306/mms...
  • POWERJOB_DB_USERNAME(默认 root
  • POWERJOB_DB_PASSWORD

你也可以通过环境变量覆盖以上配置,避免把密码写入仓库。

2) Worker(mms-admin)

配置位置

Worker 配置在 mms-admin/src/main/resources/application-dev.ymlapplication-prod.yml

  • powerjob.worker.enabled:默认 false
  • powerjob.worker.server-address:默认 127.0.0.1:7700
  • powerjob.worker.port:默认 2${server.port}(如 8080 → 28080,避免与主端口冲突)

powerjob.worker.enabled=true 且项目中存在 PowerJobWorker Bean 时,会启用 mms-commonPowerJobConfig@EnableScheduling),任务才会被调度。

示例任务

示例处理器在:mms-modules/mms-demo/.../DemoPowerJobService(实现 BroadcastProcessor),可用于理解 PowerJob 的任务生命周期(preProcess/process/postProcess)。

3) 推荐的本地联调步骤

  1. 启动 MySQL / Redis(如用 mms/script/docker/docker-compose.yml 一键起依赖)
  2. 启动 调度中心PowerJobServerApplication(默认 7700)
  3. 打开调度中心页面,按 PowerJob 的方式创建/注册应用(app-name 默认 mms
  4. mms-admin 的当前 profile 中设置:
    • powerjob.worker.enabled: true
    • powerjob.worker.server-address: 127.0.0.1:7700
  5. 启动 mms-admin(8080),再在 PowerJob Console 创建任务并选择对应处理器

4) 常见问题

  1. Worker 一直离线
    • 检查 powerjob.worker.enabled 是否为 true
    • 检查 server-address 是否可达(Docker 场景注意容器网络)
  2. 端口冲突
    • Worker 端口默认 2${server.port};若你改了 mms-admin 端口,请同步确认 worker 端口是否可用

Released under the MIT License.