Spring WebFlux Как получить значение из Mono.subscribe
У меня есть метод который отрабатывает по url /mono мне надо отдать клиенту JwtDTO с двумя значениями одно из них берется из Redis. Что то похожее делает код ниже
@PostMapping(value = "/mono")
public Mono<JwtDTO> getw(){
return Mono.fromCallable(() -> {
JwtDTO jwtDTO = new JwtDTO();
redisRepository.get("key1").subscribe(c -> {
jwtDTO.setAccessToken(c + "access");
});
jwtDTO.setRefreshToken("refresh");
return jwtDTO;
});
}
Но у меня возникает проблема что метод не дожидается получения значения из Redis и отправляет null. Если я ставлю .block то при обращении на url выдает ошибку. Подскажите как сделать такую логику правильно чтобы работало.
Ответы (1 шт):
Автор решения: Алексей
→ Ссылка
Попробуй так сделать.
return redisRepository.get("key1")
.map(value -> {
JwtDTO jwtDTO = new JwtDTO();
jwtDTO.setAccessToken(value + "access");
jwtDTO.setRefreshToken("refresh");
return jwtDTO;
});
P.S. Советую добавить обработку, что возвращать если в редисе не будет значения