我是 Spring Reactor 的新手。我一直在尝试了解ConnectableFlux类的工作原理。我已经阅读了文档并看到了在线发布的示例,但我遇到了一个问题。
有人能告诉我为什么connect()方法会阻塞吗?我在文档中没有看到任何内容表明它应该阻止......特别是因为它返回一个 Disposable 供以后使用。鉴于下面的示例代码,我从未跳过 connect() 方法。
我试图基本上模拟我过去多次使用过的旧式监听器接口范例。我想学习如何使用反应流重新创建服务类和侦听器架构。我有一个简单的服务类,它有一个名为“ addUpdateListener(Listener l) ”的方法,然后当我的服务类“ doStuff() ”方法时,它会触发一些事件传递给任何侦听器。
我应该说我将编写一个API供其他人使用,所以当我说Service类时我并不是指Spring术语中的@Service。它将是一个普通的 java 单例类。
我只是将 Spring Reactor 用于反应流。我也在研究 RxJava ..但想看看 Spring Reactor Core 是否可以工作。
我从下面的一个测试类开始只是为了理解库语法,然后陷入了阻塞问题。
我想我正在寻找的内容在这里描述:多个订阅者
更新:通过调试器运行我的代码,ConnectableFlux 连接方法内的代码永远不会返回。它挂在内部连接方法上并且永远不会从该方法返回。
reactor.core.publisher.ConnectableFlux
public final Disposable connect() {
Disposable[] out = new Disposable[]{null};
this.connect((r) -> {
out[0] = r;
});
return out[0];
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒!
这也是我的 Maven pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>SpringReactorTest</artifactId>
<version>1.0-SNAPSHOT</version>
<properties> …Run Code Online (Sandbox Code Playgroud)