java - Reactivestreams 订阅者不适用于 Spring Reactor Mono。为什么?
问题描述
我有一个 reactor.core.publisher.Mono 变量并想订阅 org.reactivestreams.Subscriber,尽管它似乎不起作用。我无法得到为什么从未调用过 onNext 方法?我看到 onSubscribe 方法调用很好。我可能弄错了,但是作为 Mono 实现 Publisher,订阅者应该可以工作。对?
@Test
public void subscriberTest() {
Mono<String> m = Mono.just("Hello!");
Subscriber<String> s = new Subscriber<String>() {
@Override
public void onSubscribe(Subscription s) {
System.out.println("Subscription "+s);
}
@Override
public void onNext(String t) {
System.out.println("onNext "+t);
}
@Override
public void onError(Throwable t) {
System.out.println("Throwable "+t);
}
@Override
public void onComplete() {
System.out.println("onComplete");
}
};
m.subscribe(s);
Mono<String> m1 = Mono.just("Bye!");
m1.subscribe(System.out::println);
}
尽管带有方法引用的变量 m1 订阅工作正常。这里控制台输出:
Subscription reactor.core.publisher.StrictSubscriber@4b168fa9
Bye!
在这里我期待看到你好!短语也。
解决方案
https://www.reactive-streams.org/reactive-streams-1.0.0-javadoc/org/reactivestreams/Subscriber.html#onSubscribe-org.reactivestreams.Subscription-这里声明No data will start flowing until Subscription.request(long) is invoked.
推荐阅读
- java - 如何为 .jar 文件生成 Jacoco 测试报告?
- python - 如何将参数传递给在 docker 容器内运行的 python 脚本?
- python-3.x - 在 python 中比较两个图像的更有效的方法
- python - 为什么在 Python 多处理子进程上调用 .join() 会尝试关闭 IDLE shell?
- javascript - 读取 Angular 和 Firebase 中登录用户的tenantId
- java - 在 Spring Boot 2.2.5 应用程序中上传文件时出现 MalformedStreamException
- c++ - C++ 文件有 32K 个整数,由换行符分隔。我需要创建 8 个较小的文件,每个文件包含 4096 个整数
- python - 如何对 22 行 546304 列的数组应用连续小波变换?
- javascript - 导航栏导致其他组件无法在 React Router 中加载
- node.js - vscode webviews中的D3,什么都看不到