fao/docs/定时任务配置示例.md
2026-04-23 19:24:46 +08:00

3.2 KiB
Raw Blame History

定时任务配置示例(治理批消费 + 采集 Cron

用途:上线后 Python 定时写 raw + Java 定时消费 raw 的参考配置。频率请按《数据源上线清单》中的授权与 SLA 调整。


1. Java治理定时RawGovernanceScheduler

1.1 方式 A — 直接写在 application.yml

在现有 fao.governance 下覆盖(示例:开启、首次延迟 2 分钟、上次跑完后间隔 5 分钟、每批最多 50 条):

fao:
  governance:
    token: ${FAO_GOVERNANCE_TOKEN:}
    # 建议生产填写白名单,避免误处理未就绪的 source
    source-codes: []   # 例: ["XFD", "DEMO"]
    scheduled:
      enabled: true
      initial-delay-ms: 120000
      fixed-delay-ms: 300000
      batch-limit: 50

说明:

  • fixed-delay-msfixedDelay上一轮执行结束后再等待该毫秒数;适合治理批任务避免重叠。
  • batch-limit:单次 consume 最多处理条数;代码中还会限制在 1200
  • source-codes:非空时,定时任务与未带 sourceCodes 的 HTTP 治理请求都只处理列出的 source_code

1.2 方式 B — Spring Profile推荐与默认配置分离

  1. server/src/main/resources/application-scheduled.yml.example 复制为 application-scheduled.yml(后者可加入 .gitignore 若含环境专有值)。
  2. 启动时增加:--spring.profiles.active=scheduled(或与 default 并列:default,scheduled)。

仅 profile 文件存在、未激活时,不会打开定时任务。

1.3 方式 C — 环境变量(容器 / systemd

fao.governance.scheduled.* 对应的环境变量示例Spring Boot 宽松绑定,以实际运行镜像为准):

配置项 环境变量示例
scheduled.enabled FAO_GOVERNANCE_SCHEDULED_ENABLED=true
scheduled.initial-delay-ms FAO_GOVERNANCE_SCHEDULED_INITIALDELAYMS=120000
scheduled.fixed-delay-ms FAO_GOVERNANCE_SCHEDULED_FIXEDDELAYMS=300000
scheduled.batch-limit FAO_GOVERNANCE_SCHEDULED_BATCHLIMIT=50

2. 与采集频率的配合(建议)

环节 典型节奏(示例) 说明
Python 写 raw 每 1560 分钟(视源站授权) 外网抓取;仓库内无内置调度,靠 Cron / K8s CronJob。
Java 消费 raw fixed-delay 515 分钟 不显著快于 单次治理耗时,避免空转;可略快于采集,以便积压尽快消化。

若 raw 积压大,可临时提高 batch-limit 或缩短 fixed-delay-ms,并观察 DB 与 CPU。


3. Cron 示例(采集)

见仓库 scripts/cron/fao-ingest.crontab.example。安装示例:

# 编辑后安装到当前用户 crontab路径、适配器、.env 务必按环境修改)
crontab scripts/cron/fao-ingest.crontab.example

生产更推荐 K8s CronJob 或统一调度平台,思路相同:定时执行 scripts/run_ingest.sh --adapter <name>,并注入 FAO_MYSQL_* / FAO_HTTP_JSON_URL 等环境变量。


4. 修订记录

版本 日期 说明
1.0 2026-04-23 初稿application 片段、Profile 样例、Cron 引用