【问题标题】:Execute the current flow while background process is running - mono reactive programming在后台进程运行时执行当前流程 - 单反应式编程
【发布时间】:2021-05-07 19:54:05
【问题描述】:

我正在尝试运行 main 方法,其中 main 方法调用另一个方法(Bmethod),我需要在后台运行该方法,但我需要立即响应 main 方法,而无需等待 Bmethod 响应。 我需要使用 java 响应式代码(webflux)。

public static void main(String[] args) {
       String abc=  Mono.just(Bmethod()).block();
        System.out.println("AAAAAAA");
    }


    public static String Bmethod() {
        System.out.println("BBBBBBBB");
        return "AACALL";

    }

我想打印 AAAAAAA 然后只打印 BBBBBBBB 而不等待 Bmethod 响应。如何使用响应式单声道 Java 实现。

【问题讨论】:

  • 我认为您需要更详细地解释您真正想要做什么。因为这可以通过很多很多不同的方式来解决。例如,abc 的用途是什么,并且您不能在反应式 non-blocking 应用程序中调用 block

标签: java spring-boot java-8 reactive-programming spring-webflux


【解决方案1】:

您必须switch your call to Bmethod to a supplier 并将block 呼叫移至末尾。

Mono<String> abcMono = Mono.fromSupplier(() -> Bmethod());
System.out.println("AAAAAAA");
String abc = abcMono.block();

注意:

  1. block 的调用定义了您真正需要来自Mono 的值的时刻,因此它不应该在开头。
  2. 与供应商解决方案相比,您对 just 的想法会强制 java 在将参数提供给函数之前对其进行计算,从而使包装无用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    相关资源
    最近更新 更多