【问题标题】:Spring & Reactor: Subscribe to a binary function of two arguments with Flux from repoSpring & Reactor:使用来自 repo 的 Flux 订阅两个参数的二进制函数
【发布时间】:2021-07-23 06:49:29
【问题描述】:

假设我有一个定义如下的二元函数:

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,但这失败了。

【问题讨论】:

    标签: spring binary flux subscribe reactor


    【解决方案1】:

    如果最初的意图是将项目的通量转换为像 (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 类型对,然后创建 tuple.getT1() strong> 和 tuple.getT2() 提取这对的第一个和第二个成员,以作为 someBinaryFunction() 参数使用。

    【讨论】:

    • 虽然此代码可能会回答问题,但添加额外的解释可能会对 OP 和未来的读者有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2017-04-16
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多