磁通并行操作和阻塞任务在并行操作之后

时间:2018-12-07 07:05:40

标签: java spring-boot reactive-programming project-reactor

我是反应式编程的新手。我有一段代码,只有在并行任务结束后,应执行并行代码,该代码才应并行运行

 //step 1 parallel stuff
Flux.fromIterable( sourceOneMap.keySet() )
.parallel()
.runOn( Schedulers.parallel() )
.subscribe( compId -> {
 Mono.just( compId )
.then( checkIfSystemTwoContainsSystemOneInfo(compId,sourceOneMap,sourceTwoMap,new Timestamp( new Date().getTime() )) )
.doOnError( e -> log.info( "error {}",  e.getStackTrace()) );} );
 //step 2
 return new MissingCountResult( rtbmDao.findCount(), new Date() );

现在,当我运行我的代码时,首先执行第2步,然后执行第1步。第2步取决于第1步。第1步应该首先竞争。我有办法阻止第2步,直到第1步结束。 / p>

1 个答案:

答案 0 :(得分:0)

使用反应式编程的目的是使代码异步而不阻塞。 是的,您可以通过不使用subscribe而是使用.block()来阻止step1完成,但这不是响应式编程的重点 如果您想使其保持反应性,则最好返回流