started = true
def start = {
val source: Source[T, NotUsed] = ???
source.mapAsync(...)(...).takeWhile(_ => started).runWith(...)
}
def stop() = {
started = false
}
}
Можно или лучше через киллсвитч?
может как-то можно с генератор-функцией обыграть () => Source[Whatever]
Оберните в GraphStage, а доступ к started предоставляйте через materialized value. Будет очень классный код.
+1 за KillSwitch
перед тем, как оно у тебя увидит, что takeWhile стало false, оно после stop успеет запустить ещё батч футурок в mapAsync
Обсуждают сегодня