![](/img/trans.png)
[英]ScheduledExecutorService, schedule different tasks at different intervals
[英]Step function lambda that executes different tasks generically and on different intervals
So I am writing a Lambda that is part of a step function, this lambda is getting a map of task name and on what interval to execute it, for example -("task1",5) --> task1 will be executed every 5分钟。 此 lambda function 处于步进机的循环条件内,并且可能循环 24 小时。 在步骤 function 循环的每次迭代中,它等待 5 分钟。 这意味着 5 分钟是我的执行迭代。 在这种情况下,我们知道“task1”实际上应该在每次迭代中执行。 在下面的示例中,我也有 ("task2",60) - 此任务应每 12 次迭代执行一次。 目前我的 Lambda 代码如下所示:
protected Map<String, Object> customHandleLambdaRequest(Map<String, Object> inputMap, Context context) throws Exception {
Map<String, Object> tasks = (Map<String, Object>) inputMap.get("tasks");
if (tasks.isEmpty()) {
return inputMap;
}
int tick = (int) inputMap.get("tick");
tick = tick + 5;
inputMap.put("tick", tick);
if (tasks.containsKey("task1") || isEvenlyDividable((int) tasks.get("task1"),tick)) {
//do something
}
if (tasks.containsKey("task2") || isEvenlyDividable((int) tasks.get("task2"),tick)) {
//do something
}
return inputMap;
}
问题是,我不断添加许多任务,最终得到一个看起来像一个大“如果”(丑陋)的代码。 我对堆栈溢出代码向导的问题是:
制作额外的 lambda。
我知道这听起来很遗憾,但这是公认的最佳做法。
每个 lambda 应该是一个独立的任务,仅在需要时调用。 如果您有很多不同的场景,则制作额外的 lambda 表达式并在您的 State 机器中选择 Task 以确定要调用哪个 lambda。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.