Spring XD使用自定义TCP序列化程序

时间:2016-02-22 13:24:38

标签: java spring tcp spring-xd

我扩展了AbstractByteArraySerializer,现在我想像其他可用的TCP序列化程序一样使用这个序列化程序(LF,NULL,L1,...)。

我在tcp-encdec.xml找到了个人资料并注册了我自己的个人资料:

...

<beans profile="use-custom">
    <bean id="CUSTOM"
        class="custom.tcp.serializer.ByteArrayCustomSerializer">
        <property name="maxMessageSize" value="${bufferSize}" />
    </bean>
</beans>

...

Spring使用EncoderDecoderMixins.EncodingEncoding转换为特定的个人资料。

EncoderDecoderMixins.Encoding是最后一堂课的枚举。 Spring将decoder TCP属性转换为基于此枚举的特定配置文件。我的CUSTOM序列化程序无法正常工作,因为它不在指定的Encodings中。

是否有办法注册新的Encoding或者我是否必须编写新的源模块才能使用我的序列化程序?

1 个答案:

答案 0 :(得分:1)

不幸的是,您需要一个自定义来源;我们可能会添加另一个枚举,例如CUSTOM,您可以在其中提供反序列化程序的类名,但需要更改标准源。

快速而肮脏的解决方法是在本地修改源:

<int-ip:tcp-connection-factory id="connectionFactory"
    ...
    deserializer="myDeserializer"/>

<bean id="myDeserializer" class="foo.Deser" />

即。将${decoder}占位符更改为指向您的bean。