Hazelcast序列化器/解串器

时间:2019-03-11 17:46:58

标签: serialization hazelcast in-memory-database kryo in-memory-data-grid

如何在集群级别配置串行器/解串器。我可以使用以下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/

请帮助!

2 个答案:

答案 0 :(得分:0)

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

服务器端的序列化机制必须匹配客户端才能工作;因此,在这里您可以对两者都使用相同的功能。

您需要做的就是在服务器端扩展Config,就像在客户端扩展ClientConfig一样。

This大致就是您想要的。

答案 1 :(得分:0)

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