Si hallas algún error en tu código o trabajo, recuerda probar siempre en un entorno de testing antes subir el código al proyecto final.
Solución:
Hay un complemento de caché de reactor que se puede usar con Spring CacheManager. Pero, como lo señalan los comentarios en la respuesta aceptada, actualmente, las API de caché de Spring (obtiene y pone) todavía están bloqueando. Solo podemos hacer que el programa sea completamente reactivo hasta que se resuelva este problema.
Aquí está el fragmento de código de muestra en Java. El proyecto de muestra completo está aquí en github.
@Service
public class CatServiceImpl implements CatService
private static final String CACHE_NAME = "sr";
private static final String KEY = "k";
@Autowired
private WebClient client;
@Autowired
private CacheManager cacheManager;
@SuppressWarnings("unchecked")
private Function>>> reader = k -> Mono
.justOrEmpty((Optional.ofNullable((List) (cacheManager.getCache(CACHE_NAME).get(k, List.class)))))
.flatMap(v -> Flux.fromIterable(v).materialize().collectList());
private BiFunction>, Mono> writer = (k, sigs) -> Flux.fromIterable(sigs)
.dematerialize().collectList().doOnNext(l -> cacheManager.getCache(CACHE_NAME).put(k, l)).then();
@Override
public Flux search()
Flux fromServer = client.get().retrieve().bodyToFlux(CatDto.class);
return CacheFlux.lookup(reader, KEY).onCacheMissResume(fromServer).andWriteWith(writer);
Te mostramos comentarios y calificaciones
Si estás contento con lo expuesto, eres capaz de dejar un artículo acerca de qué le añadirías a este tutorial.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)