Те, кто знаком с lmax ring buffer (disruptor), знают, что одним из самых больших преимуществ этой структуры данных является то, что он включает в себя различные события и когда у нас есть потребитель, который может воспользоваться пакетом, что делает систему автоматически регулируемой к нагрузке, чем больше событий вы бросаете на нее, тем лучше.Наблюдаемый пакет, такой как Lmax Disruptor
Интересно, не удалось ли достичь такого же эффекта с наблюдаемым (нацеленным на функцию дозирования). Я опробовал Observable.buffer, но это совсем другое, буфер будет ждать и не будет выпускать пакет, пока ожидаемое количество событий не поступит. то, что мы хотим, совсем другое.
, указанный подписчиком ожидает пакет от Observable<Collection<Event>>
, как только абонент заканчивает выполнение, он получает следующую партию с таким количеством событий, которое прибыло с момента начала последней обработки ...
Таким образом, если наш абонент достаточно быстр, чтобы обрабатывать одно событие за раз, он будет сделайте это, если загрузка будет выше, она будет по-прежнему иметь одинаковую частоту обработки, но больше событий каждый раз (таким образом, решение проблемы противодавления) ... в отличие от буфера, который будет придерживаться и ждать, пока пакет не заполнится.
Любые предложения? или я иду с кольцевым буфером?
Я считаю, что этот оператор называется 'bufferIntrospective', см. Http://stackoverflow.com/questions/28880247/buffer-while-processing-items –