Java 如何将订阅服务器与reactor.core.publisher.Flux连接?

Java 如何将订阅服务器与reactor.core.publisher.Flux连接?,java,project-reactor,Java,Project Reactor,我想用反应堆通量连接用户。但是,我的小示例不会产生任何输出: public static void main(String[] args) throws InterruptedException { Flux.just("a", "b", "c") .subscribe(new BaseSubscriber<String>() { @Override protected void hook

我想用反应堆通量连接用户。但是,我的小示例不会产生任何输出:

public static void main(String[] args) throws InterruptedException {
    Flux.just("a", "b", "c")
            .subscribe(new BaseSubscriber<String>() {
                @Override
                protected void hookOnSubscribe(Subscription ignored) {
                }

                @Override
                protected void hookOnNext(String value) {
                    System.out.print(value);
                }
            });
    Thread.sleep(1000);
}
。。。它产生预期的输出:

a
b
c

如何使用订阅服务器从流量接收值?

关键是
从源请求更多值。在那通电话之前什么都不会发生

带有
BaseSubscriber
的示例:

Flux<String> source = Flux.just("a", "b", "c");
source.subscribe(new BaseSubscriber<String>() {
            @Override
            protected void hookOnSubscribe(Subscription subscription) {
                request(1); // <-- here
            }

            @Override
            protected void hookOnNext(String value) {
                request(1); // <-- here
                System.out.println(value);
            }
        });
Flux<String> source = Flux.just("a", "b", "c");
source.subscribe(new Subscriber<String>() {
    private Subscription subscription;

    @Override
    public void onSubscribe(Subscription subscription) {
        this.subscription = subscription;
        subscription.request(1); // <-- here
    }

    @Override
    public void onNext(String s) {
        subscription.request(1); // <-- here
        System.out.println(s);
    }

    @Override
    public void onError(Throwable t) {
    }

    @Override
    public void onComplete() {
    }
});

关键是
从源代码请求更多的值。在那通电话之前什么都不会发生

带有
BaseSubscriber
的示例:

Flux<String> source = Flux.just("a", "b", "c");
source.subscribe(new BaseSubscriber<String>() {
            @Override
            protected void hookOnSubscribe(Subscription subscription) {
                request(1); // <-- here
            }

            @Override
            protected void hookOnNext(String value) {
                request(1); // <-- here
                System.out.println(value);
            }
        });
Flux<String> source = Flux.just("a", "b", "c");
source.subscribe(new Subscriber<String>() {
    private Subscription subscription;

    @Override
    public void onSubscribe(Subscription subscription) {
        this.subscription = subscription;
        subscription.request(1); // <-- here
    }

    @Override
    public void onNext(String s) {
        subscription.request(1); // <-- here
        System.out.println(s);
    }

    @Override
    public void onError(Throwable t) {
    }

    @Override
    public void onComplete() {
    }
});

这是正确的。此外,如果您希望源代码尽快发出,您可以在
BaseSubscriber.hookOnSubscribe
中执行
requestUnbounded()
(此后无需更多
请求
)这是正确的。此外,如果希望源代码尽快发出,可以在
BaseSubscriber.hookOnSubscribe
中执行
requestUnbounded()
(此后无需更多
请求