我正在编写一个具有每60秒执行一次的cron作业的应用程序.应用程序配置为在需要时扩展到多个实例.我只想每60秒在一个实例上执行任务(在任何节点上).开箱即用,我无法找到解决方案,我很惊讶以前没有多次询问过.我使用的是Spring 4.1.6.
<task:scheduled-tasks>
<task:scheduled ref="beanName" method="execute" cron="0/60 * * * * *"/>
</task:scheduled-tasks>
Run Code Online (Sandbox Code Playgroud) 我想获取一个作业列表(称为resultStream)并计算完全完成的作业百分比.
public class Job {
private Date date;
private String success;
// Getter and setter and constructor.
}
Run Code Online (Sandbox Code Playgroud)
该列表包含以下内容:
new Job("TODAY", "YES");
new Job("TODAY", "YES");
new Job("YESTERDAY", "YES");
new Job("TODAY", "NO");
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的代码:
resultStream.stream().parallel().filter(result -> {
if ("YES".contains(result.getSuccess())) {
return true;
} else {
return false;
}
}).collect(groupingBy(Job::getDate, HashMap::new, counting()));
Run Code Online (Sandbox Code Playgroud)
这将返回一个HashMap(Date,Long),其中包含以下内容:
TODAY,2
YESTERDAY,1
我实际上想要以下结果:
今天,66%
YESTERDAY,100%
提前致谢.