1
resposta

Motivos de uso dos Reactive Streams

Olá, gostaria de entender melhor o motivo de uso/funcionamento da API de Reactive Stream.

Com o exemplo dado na aula não consegui visualizar um fluxo interessante para o uso dessa nova API reativa.

Por exemplo, na hora que envio a nota fiscal, vejo que uma thread separada é instanciada e o processamento ocorre nela. Qual a diferença prática e o que eu ganho ao usar essa API em detrimento de criar uma Thread na mão passando um Runnable com o meu processamento?

1 resposta

Olá, João. Tudo bom? Basicamente o problema da abordagem de criar uma thread secundaria é que não se leva em consideração a capacidade de processamento da aplicação que irá consumir as mensagens. Por exemplo, se isto fosse um e-commerce e você tivesse um número grande de compras realizadas no mesmo momento, a sua aplicação iria mandar todas as notas para serem processadas de uma vez, podendo ocasionar um gargalo na aplicação de destino (webservice por exemplo). Com o fluxo reativo, você paraleliza o envio das mensagens, porém essa mensagem pode ser configurada para ficar persistida em um repositório, até o momento em que a aplicação de destino puder processa-la. Neste momento ele "puxará" a mensagem. De fato não é uma solução para todos os cenários e dependendo da situação pode mais atrapalhar do que ajudar. Porém em cenários que podem ocorrer concorrência, é bom, pois com a implementação acima se respeita o back pressure.