project-reactor - 如何创建仅在请求时才发出项目的发布者?
问题描述
我想将一个非反应式 api 与反应式发布者联系起来,该 API 在请求时生成一个项目。基本上,每当订阅者向所述发布者请求和项目时,该发布者将生成项目,但不是之前,因为操作很昂贵。
解决方案
如果昂贵的项目生成是同步且无状态的,请使用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;
});
推荐阅读
- python - TypeError:'map' 对象在 python 3.8 中不可下标
- python - 如何使用 python 将 5 分钟时间序列转换为 15 分钟时间序列
- java - “DynamoDbException:请求了未知操作。” 使用 LocalStack docker 容器时的问题,Java testcontainers
- flutter - 使用 builder 并在 Flutter 的 ChangeNotifierProvider 中创建两者
- java - 从 OIC 管理安全证书获取证书的 REST API 是什么?
- bash - 文件未加载(Bash)
- reactjs - 几秒钟后隐藏 div ReactJS
- javascript - 更改我的嵌套状态 React Native 时出现问题
- javascript - Google Drive API:下载文件给出了 lockedDomainCreationFailure 错误
- django - Django rest框架中的类别不能为空问题