当前位置: 首页 > 知识库问答 >
问题:

项目Reactor并行执行

华建同
2023-03-14

项目Reactor3.1.5。发布

考虑这一点:

Flux.range(0, 10)
    .publishOn(Schedulers.parallel())
    .subscribe(i -> LOG.info(i));

我希望订阅服务器在多个线程中运行,但它只在一个线程中运行:

2018-03-26 12:30:08.693  INFO 89770 --- [     parallel-1] d.a.Application    : 0
2018-03-26 12:30:08.693  INFO 89770 --- [     parallel-1] d.a.Application    : 1
2018-03-26 12:30:08.693  INFO 89770 --- [     parallel-1] d.a.Application    : 2
2018-03-26 12:30:08.693  INFO 89770 --- [     parallel-1] d.a.Application    : 3
2018-03-26 12:30:08.694  INFO 89770 --- [     parallel-1] d.a.Application    : 4
2018-03-26 12:30:08.694  INFO 89770 --- [     parallel-1] d.a.Application    : 5
2018-03-26 12:30:08.694  INFO 89770 --- [     parallel-1] d.a.Application    : 6
2018-03-26 12:30:08.694  INFO 89770 --- [     parallel-1] d.a.Application    : 7
2018-03-26 12:30:08.694  INFO 89770 --- [     parallel-1] d.a.Application    : 8
2018-03-26 12:30:08.694  INFO 89770 --- [     parallel-1] d.a.Application    : 9

留档告诉我的期望是正确的(http://projectreactor.io/docs/core/release/reference/#threading)。有人能给我解释一下那里发生了什么吗?

共有1个答案

贡和裕
2023-03-14

反应流本质上是连续的,publishOn只是告诉源在哪里一个接一个地发出每个值。您需要通过parallel告诉流并行,然后通过runOn指定调度程序:

Flux.range(0, 10)
.parallel()
.runOn(Schedulers.parallel())
.doOnNext(i -> LOG.info(i))
.sequential()
.subscribe();
 类似资料:
  • 我是项目Reactor或反应式编程的新手,所以我可能做错了什么。我正在努力构建一个执行以下操作的流程: 给定类实体: 从DB读取实体(

  • 我试图在maven reactor项目的子项目中执行Java文件。这与Maven exec:java goal在多模块项目上的问题类似,但是除非我执行,否则exec插件无法找到我试图在子项目中运行的类。 也许我误解了的预期工作流程,但每次更改时都必须执行mvn install,这确实会使工作流程复杂化。 当我从Eclipse执行文件时,Eclipse会正确设置类路径(即和),我希望从命令行模拟这种

  • 请忽略这个问题。我有错误的设置,导致gRPC的性能不佳。 是否可以比较GRPC与项目Reactor? 我只是想比较REST和GRPC的性能。我看不出GRPC比Reactor快。事实上,它更糟。 GRPC设置: 此 grpc 服务器使用服务器端流对来自 api 服务器的每个请求响应 1000 个“Hello”。 api 服务器返回

  • 就而言,它们之间的主要区别是什么?从文档中,我了解到是异步操作,而是同步操作。但这对我来说并没有什么意义,B/C单声道是关于并行性的,这一点是不可理解的。有人能用一种更容易理解的方式来重新表述吗? 然后在的文档中声明(https://projectreactor.io/docs/core/release/api/reactor/core/publisher/mono.html#FlatMap-ja

  • 1.3 新版功能. 默认情况下,Fabric 会默认 顺序 执行所有任务(详细信息参见 Execution strategy ),这篇文档将介绍 Fabric 如何在多个主机上 并行 执行任务,包括 Fabric 参数设置、任务独立的装饰器,以及命令行全局控制。 它是如何运转的 由于 Fabric 1.x 并不是完全线程安全(以及为了更加通用,任务函数之间并不会产生交互),该功能的实现是基于 Py

  • 我有一个应用程序在Laravel与.env.local文件(a和我做了下一个docker-comment文件: 还有我的Dockerfile: 我希望克隆存储库,并在docker compose构建时在dockerfile中执行以下操作: 重命名.env.local. env 给存储文件夹权限。我有一个错误在这一行