繁体   English   中英

Spring-Webflux:使用两个 Mono 响应

[英]Spring-Webflux:Working with two Mono Responses

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

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 返回 Mono,我需要在 CustomerBalance object 上设置它。

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

我尝试编写下面的代码能够评估第一个 mono,但在迭代第二个 mono 以设置 CustomerBalance object 时遇到问题。

 class CustomerInformationService
   {
        fun getCustomerInfomation( firstObject:Mono<Any>, second:Mono<Any>):Mono<Customer>
        {
                second.map { getCustomerInfo(it) }
        }

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

任何帮助,将不胜感激。

不完全确定我是否遵循您要执行的操作,但通常在反应流程中,您不会传递 Monos 而是传递实际值,然后将不同的服务调用相互链接。 获得所需的所有信息后,您可以将 map 发送到您希望返回的 object。

所以你会写这样的东西:

fun getCustomerInformation(customerId: String) :Mono<Customer> {
    return customerId.toMono()
        .flatMap { getCustomerInfo(it) }
        .flatMap { getCustomerBalance(it) }
        .map { ObjectYouWantToReturn }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM