spring-boot - Spring批处理:如何在运行时动态更改作业的固定延迟
问题描述
我的要求:
我有一个固定延迟为 5 秒的春季批处理作业。所以我的工作将每 5 秒轮询一次 Web 服务,并根据响应(当我得到 200 ok status 的情况)我需要让当前工作休眠 30 秒,之后它必须恢复轮询 Web 服务5秒
有没有办法在运行时动态配置它?我需要更改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
在批处理作业结束时使用注释之外,您还可以拥有一个侦听器或输出通道,它将您的 batchJob 再次添加到具有特定延迟的执行通道。
您还可以查看类似问题的答案:Scheduling a job with Spring programmatically (with fixedRate set dynamic)
推荐阅读
- qt - QtCreator:在远程设备上运行应用程序
- reactjs - 使用 React 路由器 (v6) 为什么我不能直接调用 useNavigate?
- java - 我的世界伪造服务器不工作/下载文件
- windows - 如何从本地机器上的 docker 网络外部连接到 dockerized 数据库
- sql - 如何解决缺少从 Postgres 生成 JSON 的嵌套聚合调用
- dataweave - mule 4 读取 csv 文件跳过第一行
- javascript - 为什么 document.getElementById("element_id") 返回它包含的 HTML 输入标签?
- java - 松露上的 GraalVM Java - 执行 Java 代码时来自 NFIContext.getBackend 的 NullPointerException
- python - 将文件中的数据分配给字典对象
- node.js - 为什么编译器找不到 Sass 模块?