【问题标题】:Reactor, how to maintain application aliveReactor,如何保持应用程序活着
【发布时间】:2017-11-29 15:22:35
【问题描述】:

序列是异步的,因此这将立即将控制权返回给调用线程。

public static void main(String[] args) {
    Flux<Long> tick = Flux.interval(Duration.ofSeconds(1));
    Flux<String> ticktock = tick.map(e -> e % 2 == 0 ? "tick" : "tock");
    ticktock
            .log()
            .subscribe(System.out::println);
}

在订阅者消耗无限流量时,保持程序活动的正确方法是什么?

Project Reactor 中有什么东西可以完成这项工作吗?还是我应该诉诸诸如 while(true) {} 或 Thread.sleep 之类的东西?

【问题讨论】:

    标签: spring reactive project-reactor


    【解决方案1】:
    System.out.println("Hit 'Enter' to terminate");
    System.in.read();
    

    在您的main() 末尾。 这样程序将被阻塞,直到键盘交互。

    【讨论】:

    • 感谢您的回答。事实上,我正在寻找更多与 Reactor 项目相关的最佳实践。否则使用纯 Java 阻塞主线程不是问题。
    • 我认为处理这些用例不是 Reactor 的责任。更何况它实际上是尽可能地基于标准的Java。您可以出于相同的阻塞原因使用CountDownLatch。您还可以查看StepVerifier 而不是subscribe(),并在退出前检查几个值。
    • 好的,我想知道 Reactor 中是否有一些实用程序可以做到这一点,我猜还没有;)谢谢 Artem!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多