фреймворку
задача такая - нужно время от времени вычитывать из базы список айдишников, а потом с этим списком айдишников ходить в несколько разных систем (HTTP/JDBC) и делать там определенные stateless действия, которые могут быть распараллелены между этими системами.
Условный псевдокод приблизительно какой-то такой:
val ids: List[String] = IndexService.get()
system1.process(ids)
system2.process(ids)
system3.process(ids)
Хочется чтобы systemX.process было параллельно( видимо через Futures?) и легко можно было отслеживать статус каждого процесса (скажем, репортить на API).
Я думаю в сторону Akka, или что-то получше подойдет?
Можно решить проблему стандартным фьючами, без акки
Я бы сказал, что если параллелизм - ваша основная цель, наиболее точным решением будут какие-то стримы (fs2, akka-streams, cats-iteratees, zio-ztream) С их помощью вы наиболее точно сможете настроить, сколько действий может выполняться одновременно, до какой степени можно нарастить буфер невыполненных задач и т.п.
относительно репорта статуса -- задачи предоставляют какой-то внутренний апи "прогресса", или же надо проверять статус условной фьючи, закончилась или нет?
я такое делаю обычно на акка-стримах
Обсуждают сегодня