Spring DefaultTuple不可序列化

Spring DefaultTuple不可序列化,spring,spring-integration,spring-jdbc,spring-xd,Spring,Spring Integration,Spring Jdbc,Spring Xd,我使用SpringXD1.3.0版本来处理元组消息 在使用一些轻敲来丰富消息之后,我制作了自己的聚合器来重新组合生成的消息 现在我想使用postgreSql消息存储,以便在节点崩溃时具有持久性 因此,我大致复制粘贴了原始SpringXD聚合器的原件 然后,我构建并部署了以下流: stream create aggregate --definition "queue:scoring > scoring-aggregator --store=jdbc --username=${spring.d

我使用SpringXD1.3.0版本来处理元组消息

在使用一些轻敲来丰富消息之后,我制作了自己的聚合器来重新组合生成的消息

现在我想使用postgreSql消息存储,以便在节点崩溃时具有持久性

因此,我大致复制粘贴了原始SpringXD聚合器的原件

然后,我构建并部署了以下流:

stream create aggregate --definition "queue:scoring > scoring-aggregator --store=jdbc --username=${spring.datasource.username} --password=${spring.datasource.password} --driverClassName=${spring.datasource.driverClassName} --url=${spring.datasource.url} --initializeDatabase=false > queue:endAggr"
但是,当我将通常的元组消息发送到此流时(该消息由内存存储正确处理),我得到:

xd_container_2 | Caused by: org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.io.NotSerializableException: org.springframework.xd.tuple.DefaultTuple
xd_container_2 |        at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:68) ~[spring-core-4.2.2.RELEASE.jar:4.2.2.RELEASE]
xd_container_2 |        at org.springframework.integration.jdbc.JdbcMessageStore.addMessage(JdbcMessageStore.java:345) ~[spring-integration-jdbc-4.2.4.RELEASE.jar:na]
xd_container_2 |        at org.springframework.integration.jdbc.JdbcMessageStore.addMessageToGroup(JdbcMessageStore.java:386) ~[spring-integration-jdbc-4.2.4.RELEASE.jar:na]
xd_container_2 |        at org.springframework.integration.aggregator.AbstractCorrelatingMessageHandler.store(AbstractCorrelatingMessageHandler.java:604) ~[spring-integration-core-4.2.2.RELEASE.jar:na]
xd_container_2 |        at org.springframework.integration.aggregator.AbstractCorrelatingMessageHandler.handleMessageInternal(AbstractCorrelatingMessageHandler.java:400) ~[spring-integration-core-4.2.2.RELEASE.jar:na]
xd_container_2 |        at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127) ~[spring-integration-core-4.2.2.RELEASE.jar:na]
现在。。。嗯,我被卡住了,不知道如何继续


任何提示都值得欣赏。

元组不可序列化-我不知道为什么-但XD在内部使用Kryo进行序列化(默认情况下);您可以在聚合器之前/之后添加,作为解决方法

编辑

另一个选项是使用
聚合器上的
--inputType=application/json
元组转换为json


聚合器输出将是JSON字符串的集合,将它们返回到元组将取决于您在聚合器下游执行的操作。

元组不可序列化
-我不确定为什么-但XD在内部使用Kryo进行序列化(默认情况下);您可以在聚合器之前/之后添加,作为解决方法

编辑

另一个选项是使用
聚合器上的
--inputType=application/json
元组转换为json


聚合器输出将是JSON字符串的集合,将它们返回到元组将取决于您在聚合器下游执行的操作。

谢谢您的提示。我对spring还比较陌生,我不知道如何“添加”kryo变压器;我应该添加一个只将消息转换为另一种类型的流,还是可以在聚合器xml配置文件中添加一些bean来序列化/反序列化输入/输出通道?您可以使用聚合器的自定义模块上/下流,或者自定义聚合器本身。另一个选择请参见我的编辑。好的,这就是我的想法。我有点失望,因为我很难将我所有的数据处理转换成元组,因为我相信使用XD的内部数据结构模式可以提高性能,但是不能序列化,也不能转换成字符串,所以使用起来不是很方便,你不这么认为吗?我个人同意;我建议你打开一个窗口,看看团队的想法。它不会像添加可序列化的那样琐碎,因为元组内部有对类型转换机制的临时引用,在反序列化过程中必须重新建立这些机制。谢谢您的提示。我对spring还比较陌生,我不知道如何“添加”kryo变压器;我应该添加一个只将消息转换为另一种类型的流,还是可以在聚合器xml配置文件中添加一些bean来序列化/反序列化输入/输出通道?您可以使用聚合器的自定义模块上/下流,或者自定义聚合器本身。另一个选择请参见我的编辑。好的,这就是我的想法。我有点失望,因为我很难将我所有的数据处理转换成元组,因为我相信使用XD的内部数据结构模式可以提高性能,但是不能序列化,也不能转换成字符串,所以使用起来不是很方便,你不这么认为吗?我个人同意;我建议你打开一个窗口,看看团队的想法。因为元组内部有对类型转换机制的临时引用,在反序列化过程中必须重新建立这些引用,所以它不会像添加可序列化的
那样琐碎。