首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mono返回值的缓存注释没有合适的Hazelcast序列化程序

Mono返回值的缓存注释没有合适的Hazelcast序列化程序
EN

Stack Overflow用户
提问于 2019-08-04 14:22:46
回答 1查看 587关注 0票数 0

使用spring-boot和spring-webflux并与hazelcast集成时,尝试使用基于注释的缓存时会出现错误。

我试着只使用spring-cache而不使用hazelcast,效果很好。但我应该使用hazelcast。

Maven依赖项

代码语言:javascript
复制
  <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast</artifactId>
    </dependency>
    <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast-spring</artifactId>
    </dependency>

在使用可缓存批注时的普通方法中

代码语言:javascript
复制
@Cacheable("ref-id")
public Mono<String> testCache(String testValue) {
    try {
        TimeUnit.SECONDS.sleep(5);  // (1)
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
        return Mono.just(testValue);
}

抛出此错误

代码语言:javascript
复制
com.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'reactor.core.publisher.MonoJust'
at com.hazelcast.internal.serialization.impl.SerializationUtil.handleSerializeException(SerializationUtil.java:75)
at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:157)
at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:133)
at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toData(AbstractSerializationService.java:118)
at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toData(AbstractSerializationService.java:106) 
.
.
Caused by: com.hazelcast.nio.serialization.HazelcastSerializationException: There is no suitable serializer for class reactor.core.publisher.MonoJust
at com.hazelcast.internal.serialization.impl.AbstractSerializationService.serializerFor(AbstractSerializationService.java:487)
at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:146)
EN

回答 1

Stack Overflow用户

发布于 2019-08-04 15:56:39

尝试在Reactor附加组件中使用CacheMono

这里的例外是因为Hazelcast找不到序列化Mono<T>的方法。您放在Hazelcast缓存中的所有内容都必须具有某种序列化机制,因为缓存存储可能位于远程JVM上。Mono本身并不提供一种机制。

Mono<T>对你来说意味着Mono<String>,序列化字符串是内置在Hazelcast中的,所以你不需要担心它是如何完成的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57344309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档