Сериализатор / десериализатор Hazelcast
Как настроить сериализатор / десериализатор на уровне кластера. Я могу установить сериализатор / десериализатор на уровне клиента, используя следующий код 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 ответа
В кластере каждый узел должен знать сериализатор / десериализатор для выполнения предиката /SQLPredicate. Для этого требуемый класс сериализатора (как файл jar Java) должен присутствовать в команде запуска Java CLASSPATH.
Если вы выполняете запрос, серверная часть кластера должна иметь возможность десериализации объекта.
Механизм сериализации на стороне сервера должен соответствовать стороне клиента для работы; так полезно здесь вы можете использовать то же самое на обоих.
Как вам нужно сделать, это расширить Config
на стороне сервера так же, как вы расширяете ClientConfig
на стороне клиента.
Это примерно то, что вы хотите.