From ac8e96508cbca18bf1b4e6522702fae05ceeb500 Mon Sep 17 00:00:00 2001 From: Echo009 Date: Mon, 27 Sep 2021 19:09:18 +0800 Subject: [PATCH] feat: use CompatibleFieldSerializer as default kyro serializer, providing both forward and backward compatibility --- .../java/tech/powerjob/common/serialize/SerializerUtils.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/powerjob-common/src/main/java/tech/powerjob/common/serialize/SerializerUtils.java b/powerjob-common/src/main/java/tech/powerjob/common/serialize/SerializerUtils.java index 8e70df7a..67f53343 100644 --- a/powerjob-common/src/main/java/tech/powerjob/common/serialize/SerializerUtils.java +++ b/powerjob-common/src/main/java/tech/powerjob/common/serialize/SerializerUtils.java @@ -4,6 +4,7 @@ package tech.powerjob.common.serialize; import com.esotericsoftware.kryo.kryo5.Kryo; import com.esotericsoftware.kryo.kryo5.io.Input; import com.esotericsoftware.kryo.kryo5.io.Output; +import com.esotericsoftware.kryo.kryo5.serializers.CompatibleFieldSerializer; /** * 序列化器 @@ -23,6 +24,8 @@ public class SerializerUtils { kryo.setReferences(true); //默认值就是 true,添加此行的目的是为了提醒维护者,不要改变这个配置 // 关闭序列化注册,会导致性能些许下降,但在分布式环境中,注册类生成ID不一致会导致错误 kryo.setRegistrationRequired(false); + // 支持删除或者新增字段 + kryo.setDefaultSerializer(CompatibleFieldSerializer.class); // 设置类加载器为线程上下文类加载器(如果Processor来源于容器,必须使用容器的类加载器,否则妥妥的CNF) kryo.setClassLoader(Thread.currentThread().getContextClassLoader());