PowerJob(分布式任务调度)
本项目的 PowerJob 由两部分组成:
- 调度中心(Console / Server):
mms-zoom/mms-powerjob(PowerJobServerApplication,默认 7700) - 业务 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:默认falsepowerjob.worker.server-address:默认127.0.0.1:7700powerjob.worker.port:默认2${server.port}(如8080 → 28080,避免与主端口冲突)
当
powerjob.worker.enabled=true且项目中存在PowerJobWorkerBean 时,会启用mms-common的PowerJobConfig(@EnableScheduling),任务才会被调度。
示例任务
示例处理器在:mms-modules/mms-demo/.../DemoPowerJobService(实现 BroadcastProcessor),可用于理解 PowerJob 的任务生命周期(preProcess/process/postProcess)。
3) 推荐的本地联调步骤
- 启动 MySQL / Redis(如用
mms/script/docker/docker-compose.yml一键起依赖) - 启动 调度中心:
PowerJobServerApplication(默认 7700) - 打开调度中心页面,按 PowerJob 的方式创建/注册应用(
app-name默认mms) - 在
mms-admin的当前 profile 中设置:powerjob.worker.enabled: truepowerjob.worker.server-address: 127.0.0.1:7700
- 启动
mms-admin(8080),再在 PowerJob Console 创建任务并选择对应处理器
4) 常见问题
- Worker 一直离线
- 检查
powerjob.worker.enabled是否为true - 检查
server-address是否可达(Docker 场景注意容器网络)
- 检查
- 端口冲突
- Worker 端口默认
2${server.port};若你改了mms-admin端口,请同步确认 worker 端口是否可用
- Worker 端口默认
