私はbroadcast
私のアプリのDBに格納されているIDを持ついくつかのエンティティのいくつかのApache Igniteタスク。 私はこの仕事をやめたいと思っています(私のアプリを再起動した後でも)。IgniteタスクのIDを返すことで、今後このタスクを停止する方法はありますか?
私はこの仕事のUUIDを返すために何とかしなければならないと思います(私はこの仕事をbroadcast
とします)。このタスクUUIDを私のアプリケーションのDBのエンティティ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'で新しい投稿されたタスクを判断しようとすることができますが、それは不正確な解決策になるでしょう。 –