升级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
相关产品推荐
相关产品推荐

