0

テーブルからいくつかの行を選択し、結果をキューに送信してから、DBの「送信済み」と同じレコードを送信する必要があります。これは私がこれを行おうとしている方法ですが、selectクエリの各レコードの更新クエリの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を使用してクエリを実行すると、HashMapsのArrayListが返されます。ここでラクダのドキュメントを参照してください:

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

「結果は、OUT本体にArrayList>として返されます。Listオブジェクトには行のリストが含まれ、Mapオブジェクトには列名としてStringキーを持つ各行が含まれます。」

このボディを処理するには、スプリングBeanをセットアップする必要があります。Spring Beanのarraylistから主キーを抽出し、ヘッダーを設定できます。そこから、スプリッターを使用してすべての行を処理できます。

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

于 2012-09-25T03:13:25.880 に答える