Реакти́вні пото́ки (англ. Reactive Streams) — це ініціатива із запровадження стандарту для асинхронної потокової обробки із неблоковним зворотним тиском[1].
Основним завданням реактивних потоків є керування обміном потоковими даними через асинхронну межу — таку, як передача елементів до іншої нитки або пулу ниток — забезпечуючи, що одержуюча сторона не змушується буферизувати необмежену кількість даних. Іншими словами, зворотній тиск є невід’ємною частиною цієї моделі щоби дозволити чергам, які обслуговують взаємодію ниток бути обмеженими.
Задумано дозволити створення багатьох сумісних реалізацій, які в силу дотримання правил стандарту зможуть безпроблемно взаємодіяти, зберігаючи згадані переваги і характеристики вздовж усього графу обробки потоку.
Обсягом стандарту є мінімальний набір інтерфейсів, методів і протоколів, які описують необхідні операції та об'єкти для досягнення асинхронних потоків даних із неблокуючим зворотнім тиском. Предметно-орієнтована мова (DSL) або API цілеспрямовано були залишені за межами стандарту з метою заохочення і дозволу різних реалізацій.
Ініціатива реактивних потоків почалася наприкінці 2013 року між інженерами Netflix, Pivotal і Typesafe. Найперші обговорення відбулися у 2013 році між командами Play і Akka у Typesafe.[2][3] Typesafe є одним із основних розробників реактивних потоків.[4] Інші учасники включають Red Hat, Oracle, Twitter і spray.io[5] Ведеться робота, щоб зробити реалізацію реактивних потоків на Java частиною Java 9: Даг Лі, лідер JSR 166, запропонував[6] новий клас Flow[7] який реалізує інтерфейси описані у стандарті Реактивних потоків.[4][8]
30 квітня 2015 вийшла версія 1.0.0 реактивних потоків для JVM,[4][5][9] включно із Java API,[10] текстовою специфікацією,[11] TCK та прикладами реалізації. Існує ряд сумісних реалізацій, які перевірені за допомогою TCK на відповідність стандарту, перелічені у алфавітному порядку:
Інші реалізації включають Cassandra,[21] Elasticsearch,[22] Apache Kafka,[23] Parallel Universe Quasar,[24] Play Framework.[25]