[英]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.