Например
Observable создает 1000 элементов в секунду, а Observer обрабатывает 1 элемент в секунду. Observable имеет бесконечный буфер, в который будут добавляться элементы до тех пор, пока не случится OutOfMemoryError.В случаях когда возможна ситуация backpressure, следует использовать
Flowable в качестве Rx-стрима.Flowable можно создать из Observable методом toFlowable(), который принимает объект типа BackpressureStrategy как параметр.BackpressureStrategy – это enum, который задает стратегию обработки backpressure. Значения BackpressureStrategy:•
MISSING. Продюсер не имеет стратегию работы с backpressure. В этом случае консьюмер должен решать проблему переполнения. Эта конфигурация полезна в случае, когда обработка backpressure задается операторами onBackpressure...().Если backpressure не обрабатывается, то будет брошено исключение
MissingBackpressureException.•
ERROR. В случае backpressure бросается исключение MissingBackpressureException.•
BUFFER. Все элементы добавляются в буфер, пока не будут обработаны консьюмером.•
DROP. Все новые элементы, которые консьюмер не успевает обработать, удаляются и не доставляются консьюмеру.•
LATEST. Стратегия противоположная Drop. Консьюмер получает только самый последний элемент, созданный продюсером, когда освобождается.Подробнее про backpressure.