Java 反应堆跳转到错误的调度程序?
我有一个通量,我正在使用平面图分步处理,并使用Mono.fromCallable()调用阻塞代码。在查看运行日志时,由于某种原因,退休人员正在并行池中运行。这是为什么?我如何让它们在运行组的计划程序中执行?这基本上是下面的工作流,从消息流开始,按某个键分组,然后对于每个组,我希望在它们自己的调度程序中以最大并发度6(在本例中)运行它们。我做错了什么Java 反应堆跳转到错误的调度程序?,java,project-reactor,Java,Project Reactor,我有一个通量,我正在使用平面图分步处理,并使用Mono.fromCallable()调用阻塞代码。在查看运行日志时,由于某种原因,退休人员正在并行池中运行。这是为什么?我如何让它们在运行组的计划程序中执行?这基本上是下面的工作流,从消息流开始,按某个键分组,然后对于每个组,我希望在它们自己的调度程序中以最大并发度6(在本例中)运行它们。我做错了什么 messageStream .groupBy(this::grouper) .flatMap(group ->
messageStream
.groupBy(this::grouper)
.flatMap(group ->
Scheduler scheduler = Schedulers.newBoundedElastic(6, 1, "ChildPool:"+group.key());
return group
.publishOn(scheduler)
.flatMap(t1 -> Mono.fromCallable(() -> chevronOne(t1))
.retryBackoff(MAX_RETRIES, Duration.ofSeconds(1), Duration.ofSeconds(60))
.onErrorResume(e -> doErrorChevronOne(m, e, t1))
)
.flatMap(t2 -> Mono.fromCallable(() -> chevronTwo(t2))
.retryBackoff(MAX_RETRIES, Duration.ofSeconds(1), Duration.ofSeconds(60))
.onErrorResume(e -> doErrorChevronOne(m, e, t2))
)
以下是显示调度程序跳转的日志中的几行:
2020-08-12 15:33:20.289 INFO [ChildPool:1004-21] e.u.t.t.f.l.transfers.ITestTransfers:582
2020-08-12 15:33:20.889 INFO [parallel-2] e.u.t.t.f.l.s.TransfersService:475 - ***** DOING chevronTwo ****
publishOn
仅保证给定的调度程序
将由以下操作员使用<默认情况下,code>retryBackoff在parallel
调度程序上调度重试,从而得到结果
如果需要在特定的调度程序上处理某些事情,则必须始终明确调度