Spring XD jdbc(源)->jdbc(接收器)

Spring XD jdbc(源)->jdbc(接收器),jdbc,spring-xd,Jdbc,Spring Xd,我正试图像下面这样配置从jdbc源到jdbc接收器的直接管道流 xd>stream create test2-定义输出:jdbc-split=true-username=test-password=test-drivercassname=com.mysql.jdbc.Driver-url=jdbc:mysql://dbhost:3306/test -query='select id,name from test'|输入:jdbc-username=test-password=test-drive

我正试图像下面这样配置从jdbc源到jdbc接收器的直接管道流

xd>stream create test2-定义输出:jdbc-split=true-username=test-password=test-drivercassname=com.mysql.jdbc.Driver-url=jdbc:mysql://dbhost:3306/test -query='select id,name from test'|输入:jdbc-username=test-password=test-drivercassname=com.mysql.jdbc.Driver-tableName=test2-columns=id,name-url=jdbc:mysql://dbhost:3306/test -部署

但是发生了类异常

原因:java.lang.ClassCastException:org.springframework.util.LinkedCaseInsensitiveMap无法转换为java.lang.String 位于org.springframework.xd.jdbc.JdbcMessagePayloadTransformer.transformPayloadJdbcMessagePayloadTransformer.java:39 位于org.springframework.integration.transformer.AbstractPayloadTransformer.doTransformAbstractPayloadTransformer.java:33 位于org.springframework.integration.transformer.AbstractTransformer.transformAbstractTransformer.java:33 ... 147多

MySQL连接和表模式似乎配置正确。连接已经确认

创建表testid int,名称varchar20;创建表test2 id int,名称varchar20

Spring XD版本是1.1.0.BUILD-20141103.163150-1-dist,与下面的zip不同

我想将有效负载数据存储到目标接收器表中,但该功能仍处于试验阶段吗? 或者,是流问题,例如,只是某种转换?

请参阅-接收器需要一个简单的字符串负载或一个将转换为映射的JSON字符串。当split为true时,源将生成贴图列表或单个贴图

目前,接收器没有直接处理地图的选项;您可以添加一个转换模块来将映射转换为JSON,或者创建一个自定义接收器

我们可能应该更改接收器以接受映射。

请参阅-接收器需要一个简单的字符串负载或一个将转换为映射的JSON字符串。当split为true时,源将生成贴图列表或单个贴图

目前,接收器没有直接处理地图的选项;您可以添加一个转换模块来将映射转换为JSON,或者创建一个自定义接收器


我们可能应该将接收器更改为接受映射。

正如Gary所说,接收器需要一个JSON文档—有一个未完成的JIRA票证—以改进接收器,使其也接受映射。现在,您可以让源代码使用-outputType=application/JSON生成JSON文档,而不是映射。下面是我刚刚尝试过的一个例子:

stream create jdbcCp --definition "source:jdbc --query='select id,name,year from myfiles where status = 0' --maxRowsPerPoll=10 --update='update myfiles set status = 1 where id in (:id)' --outputType=application/json | sink:jdbc --tableName=newfiles --columns=id,name,year"  --deploy

JIRA问题是

正如Gary所说,sink需要一个JSON文档,其中有一个未完成的JIRA票据,以改进sink也接受Map。现在,您可以让源代码使用-outputType=application/JSON生成JSON文档,而不是映射。下面是我刚刚尝试过的一个例子:

stream create jdbcCp --definition "source:jdbc --query='select id,name,year from myfiles where status = 0' --maxRowsPerPoll=10 --update='update myfiles set status = 1 where id in (:id)' --outputType=application/json | sink:jdbc --tableName=newfiles --columns=id,name,year"  --deploy

JIRA的问题是

我不知道jdbcsink不能直接处理map。谢谢你的提示!我不知道JDBCSink不能直接处理map。谢谢你的提示!我尝试了-outputType=application/json选项,它可以工作。谢谢我尝试了-outputType=application/json选项,它可以工作。谢谢