2

Apache Ignite でのカスタム シリアライザーのプラグイン

Binary Configuration Bean に Kyro Serializer を追加しようとしましたが、実行時にクラス型変換エラーが発生しました。

私のコードは

 <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 を掘り下げると、それを実装するには、シリアライザーのカスタム実装を Other plugin Serializers として作成する必要があるという結論に達しました。

最適化されたマーシャラーはどのように有益ですか?

4

1 に答える 1

4

BinarySerializer特定の型のシリアル化 (逆) ロジックをカスタマイズするために実装できるインターフェイスです。これは、 Ignite 1.5 以降のデフォルトのマーシャラーであるExternalizableforに類似しています。BinaryMarshaller詳細については、このページを参照してください: https://apacheignite.readme.io/docs/binary-marshaller

OptimizedMarshallerバイナリ形式が導入される前に使用されていた従来のシリアル化プロトコルを実装します。引き続き利用できますが、バイナリ形式をお勧めします。

独自のマーシャラー (Kryo ベースなど) を実装することもできます。これを行うには、Marshallerインターフェイスを実装し、プロパティを介して構成でこの実装を提供しIgniteConfiguration.setMarshaller()ます。

于 2016-03-02T19:05:41.610 に答える