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