我想将一个非反应式api与一个反应式Publisher桥接,该API在被请求时会生成一个项目。基本上,每当订户向该发布者请求项目时,该发布者都会生成该项目,但不会在此之前生成,因为操作成本很高。
答案 0 :(得分:1)
如果昂贵的商品生成是同步且无状态的,请使用generate(Consumer<SynchronousSink>)
:
Flux<UUID> uuidFlux = Flux.generate(sink -> sink.next(UUID.randomUUID());
如果它是同步的且有状态,请使用相关的重载:
Flux<String> customUuidFlux = Flux.generate(AtomicLong::new, (indexState, sink) -> {
sink.next("item#" + indexState.getAndIncrement() + "-" + UUID.randomUUID());
return indexState;
});