如果消息有效负载从一个"过滤器"到下一个"过滤器"在Spring XD流中是一个自定义的Java类实例,我想如果" pipe"需要某种序列化机制。中间是一个远程运输。
谢谢, 西蒙
答案 0 :(得分:3)
XD使用Kryo序列化和远程传输。 Java.io.serialization在理论上可行,但我们不想假设有效负载类型实现java.io.Serializable。另外,如果有效负载是Serializable,我个人认为在Kryo上自动选择Java序列化没有任何优势。 Spring XD的type conversion支持Java序列化。
您应该能够创建包含以下内容的流:
filter1 --outputType=--application/x-java-serialized-object | filter2 --input-type=my.custom.SerializablePayloadType
在这种情况下,类型转换将在命中传输之前使用Java序列化。消息总线将检测到有效负载是一个字节数组,并将其直接发送到下一个模块。包含字节的消息将content-type标头设置为声明的outputType,以便可以通过入站转换器使用Java序列化对其进行反序列化。
以上要求有效负载实现Serializable。 Spring XD的类路径中也必须包含自定义有效负载类型,即在每个已安装的容器上添加jar到xd / lib。