0

我必须从表中选择一些行,将结果发送到队列,然后在数据库中与“发送”相同的记录。这就是我尝试执行此操作的方式,但不确定如何将列值传递给选择查询的每条记录的更新查询的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 组件来实现呢?

4

1 回答 1

0

当您使用 Camel JDBC 运行查询时,您将返回一个 HashMap 的 ArrayList。请参阅此处的骆驼文档:

http://camel.apache.org/jdbc.html

“结果在 OUT 正文中以 ArrayList> 的形式返回。List 对象包含行列表,Map 对象包含以 String 键作为列名的每一行。”

您将需要设置一个 spring bean 来处理这个 body。您可以从 spring bean 中的 arraylist 中提取主键并设置标题。从那里您可以使用拆分器来处理所有行:

http://camel.apache.org/splitter.html

于 2012-09-25T03:13:25.880 回答