AkkaのCancellableインターフェースについて
スケジューラーのキャンセルについて、自分用のメモです。
Cancellable can = getContext().getSystem()
.scheduler()
.scheduleOnce(Duration.ofSeconds(timeout),
hogeActor, "cancel", getContext().getDispatcher(), getSelf());
こんな感じで、一定時間後にmessageをhogeActorに送信するスケジューラーを作成することができます。
これの返り値でCancellableが取得できます。
このcanに対して、cancel()
を呼び出すことで、スケジューラーにある処理をキャンセルすることができます。
boolean res = can.cancel();
キャンセルに成功した場合true、失敗した場合はfalseが返ってきます。
また既に処理が走っていた場合もfalseが返却されます。
can.isCancelled();
これで、キャンセルに成功したかどうかがわかります。