Я не знаю и не задаю этот вопрос, кроме как здесь, если это не то место, где я прошу прощения.
В настоящее время я работаю над приложением, использующим Spring WebFlux, и у меня возникла проблема с использованием Mono и Flux..
Здесь у меня есть запрос REST, который поставляется с простым компонентом, который содержит атрибуты, включая список.Этот список повторяется для использования адаптивного вызова монго, который возвращает Mono (findOne).Но я не думаю, что нашел правильный способ сделать это:
@PostMapping
@RequestMapping("/check")
public Mono<ContactCheckResponse> check(@RequestBody List<ContactCheckRequest> list) {
final ContactCheckResponse response = new ContactCheckResponse();
response.setRsnCode("00");
response.setRspnCode("0000");
LOG.debug("o--> person - check {} items", list.size());
final List<ContactCheckResponse.Contact> contacts = new ArrayList<>();
response.setContacts(contacts);
return Mono.fromCallable(() -> {
list.stream().forEach( c -> {
Boolean exists = contactRespository.findOneByThumbprint(c.getIdentifiant()).block() != null;
ContactCheckResponse.Contact responseContact = new ContactCheckResponse.Contact();
responseContact.setExist(exists);
responseContact.setIdentifiant(c.getIdentifiant());
responseContact.setRsnCode("00");
responseContact.setRspnCode("0000");
response.getContacts().add(responseContact);
});
return response;
});
}
факт создания блока не кажется мне в идее "реактивным", но я не нашел, какпоступить иначе.
Может ли кто-нибудь помочь мне найти лучший способ выполнить эту задачу?
Спасибо