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

配置Jobrunr任务删除策略时,引用application.properties值解析失败求助

Jobrunr自定义删除策略配置解析失败问题解决

问题分析

你在使用@Job注解通过application.properties配置任务成功/失败后的删除时机时,系统提示无法解析值,核心原因有两点:

  • 配置文件格式错误:用--作为注释(application.properties注释需用#),且值末尾多了无效的!符号,不符合ISO-8601时长格式规范
  • 注解参数的占位符解析限制:@Job注解属性虽支持Spring占位符,但需确保配置值为合法的ISO-8601 Duration格式,且Spring能正确解析注解中的占位符

解决步骤

1. 修正application.properties配置格式

将配置中的注释符号改为#,移除值末尾的!,确保时长格式符合ISO-8601规范:

# 成功任务1天后删除
jobrunr.cleanup.succeededJobsDuration=P1D
# 失败任务7天后删除
jobrunr.cleanup.failedJobsDuration=P7D

2. 注解占位符解析异常的替代方案

如果修正配置后仍无法解析,可改用编程式配置删除策略,绕过注解的编译时常量限制:

import org.jobrunr.jobs.Job;
import org.jobrunr.jobs.filters.JobFilter;
import org.jobrunr.scheduling.JobScheduler;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;

import javax.sql.DataSource;
import java.time.Duration;
import java.util.stream.Collectors;

@Bean
public JobScheduler jobScheduler(DataSource dataSource, ObjectProvider<JobFilter> jobFilters, Environment environment) {
    return JobRunr.configure()
            .useDataSource(dataSource)
            .useJobFilters(jobFilters.orderedStream().collect(Collectors.toList()))
            .withJobFilter(new JobFilter() {
                @Override
                public Job onCreating(Job job) {
                    // 从配置中读取时长并设置任务删除策略
                    String succeededDuration = environment.getProperty("jobrunr.cleanup.succeededJobsDuration");
                    String failedDuration = environment.getProperty("jobrunr.cleanup.failedJobsDuration");
                    job.setDeleteOnSuccess(Duration.parse(succeededDuration));
                    job.setDeleteOnFailure(Duration.parse(failedDuration));
                    return job;
                }
            })
            .initialize()
            .createJobScheduler();
}

这种方式直接从Spring环境读取配置值,手动设置任务删除策略,适配更复杂的配置场景。

3. 版本适配检查

确保使用的Jobrunr为最新稳定版,旧版本可能存在注解占位符解析的BUG,升级版本可避免此类问题。

内容的提问来源于stack exchange,提问作者Akhil KC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:26:17