我的要求:
我有一个弹簧批量作业,固定延迟为5秒。因此,我的工作将每5秒轮询一次Web服务,并根据响应(当我获得200 ok状态时的情况)我需要将当前作业置于睡眠30秒,之后它已经每 5秒
恢复轮询网络服务有没有办法在运行时动态配置?我需要在读者部分中更改固定延迟属性。
我的示例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();
}
}
答案 0 :(得分:0)
你可以在这里做很多方法:
注册sqlContext.setConf("hive.exec.dynamic.partition", "true")
sqlContext.setConf("hive.exec.dynamic.partition.mode", "nonstrict")
sqlContext.sql("INSERT OVERWRITE TABLE <newtable> PARTITION (<partition_cols>) SELECT * FROM <oldtable>")
bean并在每次延迟时更新它。
您还可以查看CompoundTrigger以简化逻辑。
您可以拥有一个侦听器或输出通道,而不是在批处理作业结束时使用Trigger
注释,这将再次将您的batchJob添加到具有特定延迟的执行通道。
您也可以查看类似问题的答案:Scheduling a job with Spring programmatically (with fixedRate set dynamically)