首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring-Webflux:使用两个单声道响应

Spring-Webflux:使用两个单声道响应
EN

Stack Overflow用户
提问于 2021-02-17 09:16:24
回答 2查看 77关注 0票数 0

我正在尝试评估来自两个不同服务的Mono类型的响应

代码语言:javascript
复制
data class Customer(
        val customerId : String ,
        val customerBlance : CustomerBalance,
        val customername : String ,
        val customerRefNo : String
)


data class CustomerBalance(
        val totalAmount : Double ,
        val totalCreditAmount : Double ,
        val totalDebitAmount : Double
)

在这里,我有两个服务,一个返回客户信息,另一个返回客户余额,这两个服务都发出Mono对象。

firstService返回我需要在CustomerBalance对象上设置的Mono。

第二个服务返回Mono,我需要在CustomerBalance对象上设置它。

我试着写了下面的代码能够计算第一个单声道,但在迭代第二个单声道来设置CustomerBalance对象时遇到了麻烦。

代码语言:javascript
复制
 class CustomerInformationService
   {
        fun getCustomerInfomation( firstObject:Mono<Any>, second:Mono<Any>):Mono<Customer>
        {
                second.map { getCustomerInfo(it) }
        }

    private fun getCustomerInfo(it : Any?):Customer {
            return Customer()
    }
}

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2021-02-18 00:47:23

我不能完全确定我是否理解了您的意图,但通常在反应式流程中,您不会传递Monos,而是传递实际的值,然后将不同的服务调用彼此链接起来。当您拥有所需的所有信息时,您可以将其映射到您希望返回的对象。

因此,您可以编写类似以下内容:

代码语言:javascript
复制
fun getCustomerInformation(customerId: String) :Mono<Customer> {
    return customerId.toMono()
        .flatMap { getCustomerInfo(it) }
        .flatMap { getCustomerBalance(it) }
        .map { ObjectYouWantToReturn }
}
票数 0
EN

Stack Overflow用户

发布于 2021-02-18 04:22:44

我通过使用Mono.zipWith(Mono)解决了这个问题

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66234459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档