请使用以下代码段:
TStream<Integer> stream = top.generate(() -> {
try{
Thread.sleep(1500);
}catch(InterruptedException ex){
//DO NOTHING
}
return (int)(Math.random() * 100);
});
TWindow<Integer, Integer> window = stream.last(5, TimeUnit.SECONDS, zero());
TStream<Double> average = window.batch((values, key) -> {
int sum = values.stream().mapToInt(Integer::intValue).sum();
return (double)sum / values.size();
});
average.peek(average1 -> LOGGER.info("Calculated average : " + average1));
job = dp.submit(top);
调用job = dp.submit(top)
后,执行拓扑的线程将继续在后台运行,直到JVM停止。
如何以编程方式停止此后台进程?当Edgent拓扑作为与同一JVM中的其他任务的单独进程一起运行时,这尤其有用。我试着打电话给job.cancel(true)
,但这并没有解决问题。任务继续运行......
答案 0 :(得分:1)
尝试通过Job.stateChange(Job.Action.CLOSE)