我有一个测试用例,试图从两个不同的服务启动两个save操作。两者都返回Mono(我没有使用Spring反应存储库)。
我想按顺序执行以下操作:
-
保存配置文件
-
创建特征并使用配置文件更新
-
转换/保存特征(返回特征)
他们单独工作。当我尝试将这两个链接在一起时,第二个操作是否挂起取决于我所做的(或只是不启动)。
我想它是链接/订阅到第一个的?
Profile profile = new GenericProfile();
Object o = profileService.saveProfile(profile)
.log()
.flatMap(pp -> {
TrackingTrait trait = new TrackingTrait(
"cid",
"tid",
pp.getId(),
null,
"h",
"p",
null);
return Mono
.just(trait)
.log();
})
.doOnNext(n -> log.debug("1 {}", n.getProfileId()))
.flatMap(tt -> this.trackingService
.track(tt)
.log())
.doOnNext(n -> log.debug("2 {}", n.getProfileId()))
.block();
我的输出如下所示,打印第二条日志语句时从未完成(只是旋转)。
[ INFO] reactor.Mono.FlatMap.1 : | onSubscribe([Fuseable] MonoFlatMap.FlatMapMain)
[ INFO] reactor.Mono.FlatMap.1 : | request(unbounded)
[ INFO] reactor.Mono.FlatMap.1 : | onNext(io.logicdrop.profiles.services.GenericProfile@1a01ffff)
[ INFO] reactor.Mono.Just.2 : | onSubscribe([Synchronous Fuseable] Operators.ScalarSubscription)
[ INFO] reactor.Mono.Just.2 : | request(unbounded)
[ INFO] reactor.Mono.Just.2 : | onNext(tid)
[DEBUG] i.l.analytics.AnalyticsPersistTest : 1 5ad9ed16a29e0e2f82775a82
[ INFO] reactor.Mono.FlatMap.3 : | onSubscribe([Fuseable] MonoFlatMap.FlatMapMain)
[ INFO] reactor.Mono.FlatMap.3 : | request(unbounded)