Spring 批处理:如何在 运行 时间动态更改作业的固定延迟
Spring batch: How to change the fixed delay of a job dynamically at run time
我的要求:
我有一个 spring 批处理作业,固定延迟为 5 秒。所以我的工作将每 5 秒轮询一次 Web 服务,并根据响应(当我获得 200 ok 状态时的情况)我需要将当前工作置于 睡眠 30 秒 之后它必须每 5 秒
恢复一次轮询 Web 服务
有什么方法可以在 运行 时间内动态配置这个吗??我需要更改 Reader 部分 .
中的固定延迟 属性
我的示例 TestJob 配置:
@Scheduled(fixedDelay = 5000L) // I need to change this property dynamically @ runtime
public void TestEventScheduler() {
JobParameters jobParameters = new JobParametersBuilder().addLong("TestDataJobTime", System.currentTimeMillis())
.toJobParameters();
try {
jobLauncher.run(TestDataJob, jobParameters);
} catch (Exception e) {
e.printStackTrace();
}
}
您可以在此处执行多种方法:
注册 Trigger
bean 并在每次延迟时更新它。
您还可以查看 CompoundTrigger 来简化您的逻辑。
您可以有一个侦听器或输出通道,而不是在批处理作业结束时使用 @Scheduled
注释,它将再次将您的批处理作业添加到具有特定延迟的执行通道。
也可以查看类似问题的答案:Scheduling a job with Spring programmatically (with fixedRate set dynamically)
我的要求:
我有一个 spring 批处理作业,固定延迟为 5 秒。所以我的工作将每 5 秒轮询一次 Web 服务,并根据响应(当我获得 200 ok 状态时的情况)我需要将当前工作置于 睡眠 30 秒 之后它必须每 5 秒
恢复一次轮询 Web 服务有什么方法可以在 运行 时间内动态配置这个吗??我需要更改 Reader 部分 .
中的固定延迟 属性我的示例 TestJob 配置:
@Scheduled(fixedDelay = 5000L) // I need to change this property dynamically @ runtime
public void TestEventScheduler() {
JobParameters jobParameters = new JobParametersBuilder().addLong("TestDataJobTime", System.currentTimeMillis())
.toJobParameters();
try {
jobLauncher.run(TestDataJob, jobParameters);
} catch (Exception e) {
e.printStackTrace();
}
}
您可以在此处执行多种方法:
注册
Trigger
bean 并在每次延迟时更新它。 您还可以查看 CompoundTrigger 来简化您的逻辑。您可以有一个侦听器或输出通道,而不是在批处理作业结束时使用
@Scheduled
注释,它将再次将您的批处理作业添加到具有特定延迟的执行通道。
也可以查看类似问题的答案:Scheduling a job with Spring programmatically (with fixedRate set dynamically)