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. Советую добавить обработку, что возвращать если в редисе не будет значения

→ Ссылка