**在 Apache Ignite 中插入自定义序列化程序**
**Plugging in Custom Serializer in Apache Ignite**
在 Apache Ignite 中插入自定义序列化程序
我尝试在二进制配置 bean 中添加 Kyro Serializer,但在运行时它给了我一个 class 类型转换错误。
我的密码是
<property name="binaryConfiguration">
<bean class="org.apache.ignite.configuration.BinaryConfiguration">
<property name="typeConfigurations">
<list>
<bean class="org.apache.ignite.binary.BinaryTypeConfiguration">
<property name="typeName" value="testPojo" />
<property name="serializer">
<bean class="com.esotericsoftware.kryo.serializers.DefaultSerializers" />
</property>
</bean>
</list>
</property>
</bean>
</property>
错误日志是
Caused by: java.lang.IllegalStateException: Cannot convert value of type [com.esotericsoftware.kryo.serializers.DefaultSerializers] to required type [org.apache.ignite.binary.BinarySerializer] for property 'serializer': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:302)
at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:576)
... 104 more
在深入研究 Apache Ignite 提供的 BinarySerializer 后,得出的结论是必须为序列化程序编写一个自定义实现,就像其他插件序列化程序一样来实现它。
Optimized Marshaller 有何好处?
BinarySerializer
是一个接口,可以实现为特定类型定制(反)序列化逻辑。这是对 BinaryMarshaller
的 Externalizable
的类比,这是自 Ignite 1.5 以来的默认编组器。有关详细信息,请参阅此页面:https://apacheignite.readme.io/docs/binary-marshaller
OptimizedMarshaller
实现了在引入二进制格式之前使用的遗留序列化协议。它仍然可用,但建议使用二进制格式。
您也可以实现自己的编组器(例如,基于 Kryo)。为此,实现 Marshaller
接口并通过 IgniteConfiguration.setMarshaller()
属性.
在配置中提供此实现
在 Apache Ignite 中插入自定义序列化程序
我尝试在二进制配置 bean 中添加 Kyro Serializer,但在运行时它给了我一个 class 类型转换错误。
我的密码是
<property name="binaryConfiguration">
<bean class="org.apache.ignite.configuration.BinaryConfiguration">
<property name="typeConfigurations">
<list>
<bean class="org.apache.ignite.binary.BinaryTypeConfiguration">
<property name="typeName" value="testPojo" />
<property name="serializer">
<bean class="com.esotericsoftware.kryo.serializers.DefaultSerializers" />
</property>
</bean>
</list>
</property>
</bean>
</property>
错误日志是
Caused by: java.lang.IllegalStateException: Cannot convert value of type [com.esotericsoftware.kryo.serializers.DefaultSerializers] to required type [org.apache.ignite.binary.BinarySerializer] for property 'serializer': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:302)
at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:576)
... 104 more
在深入研究 Apache Ignite 提供的 BinarySerializer 后,得出的结论是必须为序列化程序编写一个自定义实现,就像其他插件序列化程序一样来实现它。
Optimized Marshaller 有何好处?
BinarySerializer
是一个接口,可以实现为特定类型定制(反)序列化逻辑。这是对 BinaryMarshaller
的 Externalizable
的类比,这是自 Ignite 1.5 以来的默认编组器。有关详细信息,请参阅此页面:https://apacheignite.readme.io/docs/binary-marshaller
OptimizedMarshaller
实现了在引入二进制格式之前使用的遗留序列化协议。它仍然可用,但建议使用二进制格式。
您也可以实现自己的编组器(例如,基于 Kryo)。为此,实现 Marshaller
接口并通过 IgniteConfiguration.setMarshaller()
属性.