Я хочу использовать функцию, аналогичную take(n: Int)
, но во временном измерении: consume(period: Duration
. Поэтому я хочу, чтобы поток прервался, если произойдет тайм-аут. Я знаю, что могу скомпилировать поток во что-то вроде IO[List[T]]
и отменить его, но тогда я потеряю результат. На самом деле я хочу преобразовать бесконечный поток в ограниченный и сохранить результаты.
Подробнее о более широком масштабе проблемы. У меня есть бесконечный поток событий от брокера обмена сообщениями, но у меня также есть ротация учетных данных для подключения к брокеру. Итак, я хочу использовать поток событий в течение некоторого времени, затем остановиться, получить новые учетные данные, снова подключиться к брокеру, создающему новый поток, и объединить два потока в один.