You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级JobRunr至8.0.1版本后定时任务无法执行的问题求助

升级JobRunr至8.0.1版本后定时任务无法执行的问题求助

Edit: 这个问题已经解决了,详情请看评论区。

我最近把JobRunr从6.3.5版本升级到了8.0.1,用在一个纯Java项目里,搭配MongoDB作为存储提供者。启动阶段的日志看起来完全没问题:

INFO VirtualThreadJobRunrExecutor - ThreadManager of type 'VirtualThreadPerTask' started
INFO BackgroundJobServer - JobRunr BackgroundJobServer (8ef68125-5bb4-4a95-abfb-c5f1fe24ff54) using MongoDBStorageProvider and 256 BackgroundJobPerformers started successfully
INFO ServerZooKeeper - Server 8ef68125-5bb4-4a95-abfb-c5f1fe24ff54 is master (this BackgroundJobServer)

之后我配置了三个定时任务:一个每小时执行一次,另外两个每分钟执行一次。但配置完之后就彻底没动静了——定时任务完全没触发。有几次运行时,后台任务服务器会在一分钟后重启,但也就仅此而已,还是看不到任务执行的迹象。

我的JobRunr初始化代码是这样的:

MongoDBStorageProvider storage = new MongoDBStorageProvider(
    MongoDatastore.get().getMongoClient(), databaseName
);

JobScheduler scheduler = JobRunr.configure()
    .useStorageProvider(storage)
    .useBackgroundJobServer()
    .initialize()
    .getJobScheduler();

创建定时任务的代码大概是这个样子:

scheduler.scheduleRecurrently(uuid.toString(), Duration.ofMinutes(1), this::execute);

我登录Mongo shell查了一下,后台任务服务器和定时任务的文档都已经正常创建了(因为是不同运行实例的记录,所以ID和日志里的不一样):

jobrunr> db.background_job_servers.find()
[
  {
    _id: UUID('1e09cc9e-9c58-47f0-84a1-bd31cda21a77'),
    name: '4efbddd3c64e',
    workerPoolSize: 256,
    pollIntervalInSeconds: 15,
    deleteSucceededJobsAfter: 'PT36H',
    permanentlyDeleteDeletedJobsAfter: 'PT72H',
    firstHeartbeat: '2025-07-29T14:38:47.870647198Z',
    lastHeartbeat: '2025-07-29T14:45:33.073824205Z',
    running: true,
    systemTotalMemory: Long('12352139264'),
    systemFreeMemory: Long('647979008'),
    systemCpuLoad: 0.04534611688589821,
    processMaxMemory: Long('3089104896'),
    processFreeMemory: Long('3035388512'),
    processAllocatedMemory: Long('53716384'),
    processCpuLoad: 0.00012545477355413372
  }
]

jobrunr> db.recurring_jobs.find()
[
  {
    _id: '5f1a3bae-d048-3e86-adf7-d284b0849ad5',
    version: 0,
    jobAsJson: '{"version":0,"jobSignature":"...DataSource.execute()","jobName":"...DataSource.execute()","labels":[],"jobDetails":{"className":"...DataSource","methodName":"execute","jobParameters":[],"cacheable":true},"id":"5f1a3bae-d048-3e86-adf7-d284b0849ad5","scheduleExpression":"PT1H","zoneId":"UTC","createdBy":"API","createdAt":"2025-07-29T14:38:47.923161385Z"}',
    createdAt: Long('1753799927923')
  },
  {
    _id: 'e56fa5b7-30e9-3b22-9ca5-d8d44396955d',
    version: 0,
    jobAsJson: '{"version":0,"jobSignature":"...Simulation.execute()","jobName":"...Simulation.execute()","labels":[],"jobDetails":{"className":"...Simulation","methodName":"execute","jobParameters":[],"cacheable":true},"id":"e56fa5b7-30e9-3b22-9ca5-d8d44396955d","scheduleExpression":"PT1M","zoneId":"UTC","createdBy":"API","createdAt":"2025-07-29T14:38:47.976590979Z"}',
    createdAt: Long('1753799927976')
  },
  {
    _id: '62f55b7f-2ad7-340f-87aa-98fdd0660269',
    version: 0,
    jobAsJson: '{"version":0,"jobSignature":"...DatabaseListener.execute()","jobName":"...DatabaseListener.execute()","labels":[],"jobDetails":{"className":"...DatabaseListener","methodName":"execute","jobParameters":[],"cacheable":true},"id":"62f55b7f-2ad7-340f-87aa-98fdd0660269","scheduleExpression":"PT1M","zoneId":"UTC","createdBy":"API","createdAt":"2025-07-29T14:38:47.980927767Z"}',
    createdAt: Long('1753799927980')
  }
]

现在我有点摸不着头脑——只要切回6.3.5版本(代码完全没改),定时任务就能正常执行。我查了新版本的Breaking Changes文档,会不会是漏看了什么关键变化?(会不会和任务ID有关?这是升级时我唯一修改的代码——之前用的是有意义的名称,现在换成了UUID)

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 12:44:51