Приложение не использует webflux и реактивное программирование, оно использует обычный CrudRepository
для подключения к базе данных, для ответа на который требуется некоторое время, и использует WebClient
для выполнения запросов к другим службам, но с использованием * Функция 1003 * для получения результата синхронно. Я хочу изменить следующий код, чтобы оба вызова происходили одновременно:
@Service class CustomerService(
val profileClient: WebClient,
val customerRepository: CustomerRepository
) {
fun getCustomer(id: String) : CustomerData {
val customer = customerRepository.findById(id)
val profile = profileClient.get().uri("/v1/profile/{id}", id)
.retrieve().bodyToMono<Profile>()
.block()
return CustomerData(customer, profile)
}
}
Если вызов customerRepository.findById(id)
принимает, скажем, 20 миллисекунд, а profileClient.get..
- 50 миллисекунд, общее значение занимает 70 миллисекунд, в то время как если я вызываю оба вызова одновременно, это должно занять около 50 миллис.
Я не могу перенести приложение в полностью реактивную версию с Webflux, так как в нем много кода для переноса.