如何在集群级别配置串行器/解串器。我可以使用以下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/)
请帮助!
答案 0 :(得分:0)
如果您正在运行查询,则群集的服务器端将需要能够反序列化对象。
服务器端的序列化机制必须匹配客户端才能工作;因此,在这里您可以对两者都使用相同的功能。
您需要做的就是在服务器端扩展Config
,就像在客户端扩展ClientConfig
一样。
This大致就是您想要的。
答案 1 :(得分:0)
在集群中,每个节点都需要知道序列化器/反序列化器以执行谓词/ SQLPredicate。为此,所需的序列化程序类(作为Java jar文件)应该出现在启动命令Java CLASSPATH中。