1
resposta

Criando o nosso subscriber

Boa tarde!

Na aula "Criando o nosso subscriber" do curso "Novidades do Java: Produtividade com novos recursos" o professor ensina como criar nosso próprio subscriber, para isso devemos implementar a Interface Subscriber.

Meu código ficou assim:

package br.com.alura.subscriber;

import br.com.alura.model.NotaFiscal;
import br.com.alura.wsclient.NotaFiscalWSClient;
import jdk.jshell.JShell;

import java.util.concurrent.Flow;
import java.util.concurrent.Flow.Subscriber;

public class NotaFiscalSubscriber implements Subscriber<NotaFiscal> {

    Flow.Subscription subscription;

    @Override
    public void onSubscribe(Flow.Subscription subscription) {
        System.out.println("Chamando o onSubscribe");
        this.subscription = subscription;
        this.subscription.request(2);

    }

    @Override
    public void onNext(NotaFiscal item) {
        NotaFiscalWSClient nfwsc = new NotaFiscalWSClient();
        nfwsc.enviar(item);
    }

    @Override
    public void onError(Throwable throwable) {
        throwable.printStackTrace();
    }

    @Override
    public void onComplete() {
        System.out.println("Todas as Notas foram emitidas!");
    }
}

Mas eu realizei testes aqui e percebi que o método enviar está sendo chamado em uma única Thread, alguém faz ideia de como definir um ThreadPool para ser utilizado na Subscriber que criamos?

1 resposta

Fala Edu, de boa?

Cara vi que sua dúvida tá aberta um tempinho, não sei se já resolveu, caso não tenha resolvido, sugiro dar uma olhadinha no curso de threads