微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring & Reactor:从 repo 订阅带有 Flux 的两个参数的二元函数

如何解决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 个参数的函数的最佳实践是什么?我的第一个直觉是使用上面的序列平面映射,但失败了。

解决方法

如果最初的意图是将项目的 Flux 转换为像 (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(...) 方法创建类型对 Tuple2tuple.getT1() strong> 和 tuple.getT2() 提取该对的第 1 和第 2 个成员,以用作 someBinaryFunction() 参数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。