【发布时间】:2021-10-13 17:37:13
【问题描述】:
我正在尝试使用返回 Mono 的 Spring reactor webclient 执行多个 HTTP 调用。我正在使用 Mono.block() 等待所有单声道完成。这不是等到 subscribe() 完成。
public class UserValidator {
public Mono<User> getUserSummary(int userId) {
User user = new User();
// First Mono
Mono<Address> address = WebClientUtil.mono(userId, Address.class);
address.subscribe(adrs -> updateAddress(adrs, user));
// Second Mono
Mono<Education> education = WebClientUtil.mono(userId, Education.class);
education.subscribe(edcn -> updateEducationDeatils(edcn, user));
Mono.when(address, education).block(); // Blocking the monos to complete
// Intermittently returning the incomplete data ******************
return Mono.just(user);
}
private void updateAddress(Address adrs, User user) {
// Do some validations
// Validations takes 5 to 10 seconds
user.setAddress(adrs);
}
private void updateEducationDeatils(Education education, User user) {
// Do some validations
// Validations takes 5 to 10 seconds
user.setEducation(education);
}
}
有人可以帮我解决这个问题,以便在 subscribe() 完成后返回更新的用户对象吗?
【问题讨论】:
标签: java spring spring-boot spring-webflux