簡體   English   中英

將 @Cacheable 注釋與 Reactive 控制器方法一起使用

[英]Using @Cacheable annotation with a Reactive controller method

我目前正在嘗試使用 Redis 為 Sprint Boot 應用程序實現緩存:

@Cacheable(value = "products", key = "#id")
@GetMapping(value = "/product/{id}")
public Mono<Product> getProduct(@PathVariable("id") String sku) {
    ...
}

但是,我遇到了這個異常:

java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [reactor.core.publisher.MonoMapFuseable]

根據我的研究,這與它嘗試序列化 Mono 返回類型有關,而不是Product本身。 所以我的問題是,對於像這樣的反應式方法,使用 Redis 實現緩存機制的推薦方法是什么? 評論和反饋將不勝感激。

將 getProduct() 的返回類型從Mono更改為Product

由於您一次只獲得一種產品,並且您使用 Mono<> 是因為它最多發出一項,然后(可選)以 onComplete 信號或 onError 信號終止。

因此,而不是使用 Product 作為返回類型,並為沒有產品定義 else ,即處於錯誤狀態。

或者通過這些鏈接了解使用 Redis 實現緩存機制的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM