小编Tim*_*Tim的帖子

为什么 ConnectableFlux.connect() 会阻塞?

我是 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)

spring-reactor

4
推荐指数
1
解决办法
1635
查看次数

标签 统计

spring-reactor ×1