我broadcast
某些Apache Ignite任務的某些實體的ID存儲在我的應用的數據庫中。 在某些時候我想停止這個任務(甚至可能在重新啓動我的應用程序後)。如何返回Ignite任務的ID以便將來停止該任務?
爲此,我認爲我需要以某種方式返回此任務的UUID(當我此任務爲broadcast
時),將此任務UUID保存在我的應用的數據庫中的實體ID附近,以便將來停止此任務。
這裏是我怎樣才能制止這種任務,如果我知道這個任務UUID(taskUuid)(Scala代碼):
val clusterGroup = ignite$.cluster().forServers()
ignite$.compute(clusterGroup).broadcast(new IgniteRunnable {
override def run(): Unit = {
ignite$.compute().activeTaskFutures[Any]().asScala.filter(
e => e._1.toString == taskUuid).foreach(e => e._2.cancel())
}
})
所以,我的問題是,我怎麼能回到這個taskUuid
,當我提交了一些任務與IgniteCompute.broadcast(...)
方法?
葉甫,似乎IgniteCompute.activeTaskFutures不會節點後工作重新開始。 – Yakov
據我所知,異步回調只有在'broadcast'完成時纔會執行。 但它可能是長時間運行的操作,我想停止。 我知道我可以嘗試用'activeTaskFutures'來確定新提交的任務,但這將是不準確的解決方案。 –