yanom blog

様々な技術について書きます

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();

これで、キャンセルに成功したかどうかがわかります。