反应堆背压使发布线程等待

时间:2018-06-21 02:22:06

标签: java project-reactor

我有一个从SQS读取的线程,并且希望将每个消息发布到具有单个使用者的反应堆处理器上。消费者可能需要花费1-2秒来处理消息。如果使用者忙,我希望发布线程能够等待。我还想使使用者并行化,但是如果所有线程都忙,它仍然会保持背压并降低发布者的速度。这是我到目前为止的内容,但我看不到发布商的速度变慢。

private EmitterProcessor<T> rp = EmitterProcessor.create(1);

void publish(T object) {
    rp.onNext(object);
}

void addConsumer(Consumer<T> subscriber) {
    ParallelFlux<T> flux = rp.parallel(workers, 1).runOn(Schedulers.parallel());
    if (backpressure) {
        flux.subscribe(new BaseSubscriber<T>() {
            @Override
            protected void hookOnSubscribe(Subscription subscription) {
                request(1);
            }

            @Override
            protected void hookOnNext(T value) {
                subscriber.accept(value);
                request(1);
            }
        });
    } else {
        flux.subscribe(subscriber);
    }
}

有什么想法吗?

0 个答案:

没有答案