1

如何在集群级别配置序列化器/反序列化器。我可以使用以下 Java 代码在客户端级别设置序列化器/反序列化器。

ClientConfig clientConfig = new ClientConfig();
SerializerConfig userDataSerializer = new
SerializerConfig().setTypeClass(UserData.class).setImplementation(new
UserDataSerializer()); clientConfig.getSerializationConfig().addSerializerConfig(userDataSerializer);

但是在进行 SQL 查询时,它会引发以下错误。

Exception in thread "main" com.hazelcast.nio.serialization.HazelcastSerializationException: There is no suitable de-serializer for type 2. This exception is likely to be caused by differences in the serialization configuration between members or between clients and members.

发生上述错误是因为 Hazelcast 集群不知道如何序列化/反序列化对象。

我正在使用使用 Kryo 进行序列化的自定义序列化程序(基于此博客http://blog.hazelcast.com/comparing-serialization-methods/

请帮忙!

4

2 回答 2

1

在集群中,每个节点都需要知道序列化器/反序列化器来执行 Predicate/SQLPredicate。为此,启动命令 Java CLASSPATH 中应该存在所需的序列化程序类(作为 Java jar 文件)。

于 2019-03-14T10:31:17.833 回答
0

如果您正在运行查询,则集群的服务器端将需要能够反序列化对象。

服务器端的序列化机制必须匹配客户端才能工作;在这里很有帮助,您可以在两者上使用相同的。

您需要做的是以与在客户端Config扩展相同的方式在服务器端扩展ClientConfig

大致就是你想要的。

于 2019-03-11T18:14:28.777 回答