我正在尝试评估来自两个不同服务的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返回我需要在CustomerBalance对象上设置的Mono。
第二个服务返回Mono,我需要在CustomerBalance对象上设置它。
我试着写了下面的代码能够计算第一个单声道,但在迭代第二个单声道来设置CustomerBalance对象时遇到了麻烦。
class CustomerInformationService
{
fun getCustomerInfomation( firstObject:Mono<Any>, second:Mono<Any>):Mono<Customer>
{
second.map { getCustomerInfo(it) }
}
private fun getCustomerInfo(it : Any?):Customer {
return Customer()
}
}任何帮助都将不胜感激。
发布于 2021-02-18 00:47:23
我不能完全确定我是否理解了您的意图,但通常在反应式流程中,您不会传递Monos,而是传递实际的值,然后将不同的服务调用彼此链接起来。当您拥有所需的所有信息时,您可以将其映射到您希望返回的对象。
因此,您可以编写类似以下内容:
fun getCustomerInformation(customerId: String) :Mono<Customer> {
return customerId.toMono()
.flatMap { getCustomerInfo(it) }
.flatMap { getCustomerBalance(it) }
.map { ObjectYouWantToReturn }
}发布于 2021-02-18 04:22:44
我通过使用Mono.zipWith(Mono)解决了这个问题
https://stackoverflow.com/questions/66234459
复制相似问题