Какова роль Подписки в реактивном программировании?
Subscription (Подписка) — интерфейс, действующий как контракт между источником данных (Publisher) и потребителем (Subscriber), обеспечивающий управление потоком, backpressure и ресурсами.
Основные методы
| Метод | Назначение |
|---|---|
request(long n) |
Информирует источник о количестве элементов, которые потребитель готов получить |
cancel() |
Останавливает поток данных, освобождая ресурсы |
Управление backpressure
Метод request — основной канал, по которому подписчик сообщает источнику о своей текущей возможности принимать данные. Реализации Publisher оценивают готовность подписчика и адаптируют скорость передачи данных, предотвращая перегрузку.
Управление ресурсами
Для источников данных, связанных с файлами, потоками ввода-вывода или базами данных, Subscription предоставляет средства для освобождения ресурсов. После вызова cancel() источник данных может закрыть файл или прекратить сетевое взаимодействие.
На собеседовании: ключевое — Subscription связывает Publisher и Subscriber, и именно через request(n) реализуется backpressure. Частая ошибка — описывать Subscription как просто «подписку», забывая про управление потоком и ресурсами.