如何关闭Apache Edgent后台任务?

时间:2018-06-18 11:47:38

标签: iot apache-edgent

请使用以下代码段:

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),但这并没有解决问题。任务继续运行......

1 个答案:

答案 0 :(得分:1)