Изучение
Наблюдаемые данные и жизненный цикл
Replay-latest доставка, порядок событий, ошибки, закрытие и владение ресурсами.
Наблюдаемые данные и жизненный цикл
data синхронно возвращает последнее подтверждённое значение. stream — replay-latest broadcast Stream: новый слушатель сначала получает текущее значение, а затем последующие commit.
Порядок
Публикация асинхронна. Значения ставятся в очередь в порядке принятия, а callback никогда не выполняется в стеке вызова setData. Commit из слушателя не приводит к его рекурсивному повторному входу.
Состояние, а не журнал событий
Stream представляет актуальные бизнес-данные. Он не является долговечным журналом и не гарантирует доставку exactly once. Для истории событий нужен transactional outbox, event store или другой устойчивый механизм.
Закрытие
close() идемпотентен: запрещает новые commit, вызывает closeRepository(), завершает текущие подписки и оставляет последнее значение доступным через data. Repository не закрывает общие DataSource только потому, что они находятся в его контейнере.
Порядок завершения: binding → UseCase и прикладные сервисы → Repository → DataSource и технические клиенты.