Spring XD 使用自定义 TCP 序列化程序
Spring XD Using custom TCP serializer
我扩展了 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.Encoding
将 Encoding
转换为特定配置文件。
EncoderDecoderMixins.Encoding
是最终 class 中的一个枚举。 Spring 将 decoder
TCP 属性 转换为基于此枚举的特定配置文件。我的 CUSTOM 序列化程序无法工作,因为它不在指定的 Encodings
.
中
有没有办法注册一个新的 Encoding
或者我是否必须编写一个新的 Source 模块才能使用我的序列化程序?
很遗憾,您将需要自定义源;我们可能会添加另一个枚举,例如 CUSTOM
,您可以在其中提供反序列化器的类名,但这需要对标准源进行更改。
一个快速而肮脏的解决方法是在本地修改源代码:
<int-ip:tcp-connection-factory id="connectionFactory"
...
deserializer="myDeserializer"/>
<bean id="myDeserializer" class="foo.Deser" />
即更改 ${decoder}
占位符以指向您的 bean。
我扩展了 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.Encoding
将 Encoding
转换为特定配置文件。
EncoderDecoderMixins.Encoding
是最终 class 中的一个枚举。 Spring 将 decoder
TCP 属性 转换为基于此枚举的特定配置文件。我的 CUSTOM 序列化程序无法工作,因为它不在指定的 Encodings
.
有没有办法注册一个新的 Encoding
或者我是否必须编写一个新的 Source 模块才能使用我的序列化程序?
很遗憾,您将需要自定义源;我们可能会添加另一个枚举,例如 CUSTOM
,您可以在其中提供反序列化器的类名,但这需要对标准源进行更改。
一个快速而肮脏的解决方法是在本地修改源代码:
<int-ip:tcp-connection-factory id="connectionFactory"
...
deserializer="myDeserializer"/>
<bean id="myDeserializer" class="foo.Deser" />
即更改 ${decoder}
占位符以指向您的 bean。