1
resposta

[Dúvida] Paralelizar a execução do Subscriber

No exemplo da NotaFiscal, caso eu quisesse que duas threads consumissem o mesmo subscriber para paralelizar a geração de notas, teria como fazer isso utilizando SubmissionPublisher ?

No caso de diferentes subscriber, conforme mostrado no exemplo da aula, é possível, mas e se for o mesmo ?

Isso seria útil no caso hipotético de querermos solicitar as notas com mais rapidez, desde que o NotaFiscalWS aguentasse.

1 resposta

Olá George, tudo bem?

Sim, é possível paralelizar a execução do Subscriber utilizando o SubmissionPublisher. No caso de diferentes Subscriber, como você mencionou, é possível utilizar o método subscribeOn para executar em diferentes threads.

No entanto, no caso de um mesmo Subscriber, é necessário ter cuidado para não gerar conflitos. Uma opção seria utilizar o método observeOn para especificar em qual thread o Subscriber deve ser executado. Dessa forma, é possível garantir que o Subscriber será executado de forma paralela, mas sem gerar conflitos.

Por exemplo, suponha que você tenha duas threads executando o mesmo Subscriber:

SubmissionPublisher<NotaFiscal> publisher = new SubmissionPublisher<>();

// Thread 1
publisher.observeOn(Schedulers.computation()).subscribe(new MeuSubscriber());

// Thread 2
publisher.observeOn(Schedulers.computation()).subscribe(new MeuSubscriber());

Nesse caso, o Subscriber será executado em diferentes threads, garantindo a paralelização da geração de notas fiscais.

Espero ter ajudado e bons estudos!