Project Reactor Essentials 12 - Backpressure with limitRate

preview_player
Показать описание
Learn Project Reactor from Spring in this easy to follow training. Project Reactor Essentials will guide you through the essentials of this framework in a tutorial like style. Step by step you will get familiar with Flux, Mono, and operators like subscribeOn, publishOn, map, flatMap, concat, zip, merge, and many more.

Рекомендации по теме
Комментарии
Автор

Flux.log() acts as a proxy Subscriber+Publisher that logs anything that passes thorugh it. Both subscriptions and requests always go upstream - from Subscriber to Publisher. When your .log() is below .limitRate(3), the following happens:
- subscribe() requests unbounded from log() - this is logged to console
- log() requests unbounded from limitRate(3)
- limitRate(3) requests 3 from range

if you swap them, then:
- subscribe() requests unbounded from limitRate(3)
- limitRate(3) requests 3 from log() - this is logged to console
- log() requests 3 from range

donmarjanus
Автор

The main ideea is not that subscriber will tell the publisher how much to limit the propagation of events, why the publisher limits it at it own will without subscriber to say anithing?

TheProphet
Автор

Fala DevDojo!! Tenho gostado muito dos seus vídeos. Seus tutoriais são ótimos e têm me ajudado a entender esse mundo reativo em Java.
Sobre esse bug no log que você comentou, o que eu percebi foi que o método limitRate do Flux não foi desenhado para aplicar backpressure, mas para quando a fonte de dados tem limitações para fornecer os dados - por ex um consumer que faz um request unbounded, mas a fonte de dados não é capaz de responder nessa taxa. No fim das contas, isso acaba aplicando backpressure porque limita o fluxo geral de dados, mas o mecanismo é meio que o inverso do esperado - a gente não fala que o Subscriber pode receber apenas X elementos, mas que o Publisher pode publicar apenas X. Por isso que você tá vendo logs diferentes dependendo da posição em que você coloca o log. Espero ter ajudado, e muito obrigado pelos seus vídeos!

EduardoFFAraujo