Scala で Retry 処理を実装する
こんにちは、 @kz_morita です。
Scala で retry 処理を実装する必要があったのですがライブラリを使って簡単に実装できたのでメモです。
retry 処理を実現するライブラリ Scala で retry をするためのライブラリをいくつかありますが、今回は以下を使用しました。
https://github.com/softwaremill/retry 使い方は簡単で、retry するポリシーを定義し、成功とする条件を定義し、apply をします。
retry する対象のメソッドは以下とします。
def now(): LocalDateTime = LocalDateTime.now(ZoneOffset.UTC) var start = now() var execCount = 0 def exec(num: Int): Future[Int] = { Future { //////// ロギング用 execCount += 1 val elapsed = ChronoUnit.MILLS.between(start, now()) / 1000 println(s"### exec ${execCount}times. ${elapsed}s") //////// ロギング用 num % 2 } } 与えられた数を2で割った余りを返すメソッドです。