spring - Spring & Reactor:使用来自 repo 的 Flux 订阅两个参数的二进制函数
问题描述
假设我有一个具有以下定义的二元函数:
Mono<ObjectA> someBinaryFunction(String someString, enum someEnum)
我想在一些操作后使用来自 Spring 存储库的通量来订阅这个函数:
repo.findAll()
.filter( item -> itemField < someValue)
.flatMapSequential( item ->
Flux.just(item.getValue1(), enum.ENUMVALUE)
).subscribe(baseClass::someBinaryFunction)
如何实现这一点,使用 Flux 订阅具有 N 个参数的函数的最佳实践是什么?我的第一个直觉是像上面那样使用sequentialFlatMap,但这失败了。
解决方案
如果最初的意图是将项目的通量转换为 (item, enumVal) 等对的通量,则解决方案可能如下:
repo.findAll()
.filter( item -> itemField < someValue)
.flatMapSequential( item ->
Flux.just(Tuples.of(item.getValue1(), enum.ENUMVALUE))
).subscribe(tuple->baseClass.someBinaryFunction(tuple.getT1(), tuple.getT2()))
Tuples.of (...)方法创建Tuple2<ItemType, EnumType>类型对,然后tuple.getT1()和tuple.getT2()提取这对的第一个和第二个成员,以用作someBinaryFunction()参数。
推荐阅读
- csv - 输入错误:预期“--nodes”至少有 1 个有效项目,但有 0 []
- c# - 如何从 EnumWindows WinAPI 函数中正确获取窗口句柄?
- python-2.7 - Python 2.7.15 在 Windows 的末尾添加了一个新行,但在 Linux 上没有。我该如何解决?
- javascript - 如何测试数组中是否存在特定字符串
- amazon-web-services - 单个 AWS 组织中的多个 Root 账户:IAM 管理员无法查看指定区域中的所有 EC2 实例
- python - 如何将列表从 python 传递给 jython 返回结果给 python
- ruby-on-rails - 在活动记录中出现密码存在两个错误
- python - 在终端中调用“python3”时如何停止 Python 2.7 运行?
- java - 在 ANT 构建期间未发送修改的文件
- javascript - 在外部 .js 文件的 Angular 7 项目中包含 JQuery-Ui