Java + Reactor:每条记录的 Http 调用



我有一个Stream<A>,我想从另一个服务迭代并获取有关每条记录的其他信息。最后它应该成为Stream<B>.

由于我正在使用Jetty所以我无法使用.block().

如何使用反应器项目执行此操作?

你可以使用flatMap:

Flux<A> fluxA = //...;
Flux<B> fluxB = sampleFlux.flatMap(elem -> fetchDataFromRemoteService(elem));

其中 fetchDataFromRemoteService(A a( 返回 Publisher。

或者你可以使用 Flux#concatMap:

Flux<A> fluxA = //...;
Flux<B> fluxB = sampleFlux.concatMap(elem -> fetchDataFromRemoteService(elem));

flatMap 和 concatMap 之间的区别在于,在第二种情况下,所有操作都将相互跟随。

或:

Stream<B> streamB =  Flux.fromStream(streamA)
.flatMap(this::fetchDataFromRemoteService)
.toStream();

最新更新