我必须从表中选择一些行,将结果发送到队列,然后将相同的记录发送到DB中的“已发送”。 这是我尝试这样做但不确定如何将列值传递给选择查询的每个记录的更新查询的 where 子句。
<route>
<from uri="timer://kickoff?period=10000"/>
<setBody>
<constant>select top 10 * from tableName</constant>
</setBody>
<to uri="jdbc:test"/>
<multicast>
<to uri="activemq:queue:TESTQUEUE"/>
<setBody>
<constant>update tableName set status='Sent' where primaryKey= ${primaryKey}</constant>
</setBody>
<to uri="jdbc:test"/>
</multicast>
</route>
此路线是否会针对所有10条记录运行?
如果使用JDBC / SQL组件是不可能的,那么如何使用Hibernate组件实现它呢?
答案 0 :(得分:0)
使用Camel JDBC运行查询时,将返回HashMaps的ArrayList。请参阅此处的骆驼文档:
http://camel.apache.org/jdbc.html
“结果在OUT体中作为ArrayList&gt;返回.List对象包含行列表,Map对象包含每行,String键作为列名。”
您需要设置一个spring bean来处理这个主体。您可以从spring bean中的arraylist中提取主键并设置标题。从那里你可以使用拆分器来处理所有行: