Skip to content

PowerJob(分布式任务调度) ​

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

  1. 调度中心(Console / Server):mms-zoom/mms-powerjob(PowerJobServerApplication,默认 7700)
  2. 业务 Worker:mms-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.yml 中 server.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.yml 与 application-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-common 的 PowerJobConfig(@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.