我刚开始使用 Apache Camel,我想尝试同步两个表。两个表都有两列,“id”和“name”。该方案将查询第一个表,检查第二个表中的每条记录是否存在,并插入每条不存在的记录。这是我的尝试:
<camel:camelContext id="test">
<camel:route>
<camel:from uri="timer://kickoff?period=5s"/>
<camel:to uri="sql:select id, name from table1?dataSourceRef=dataSource"/>
<camel:split>
<camel:simple>body</camel:simple>
<camel:to uri="sql:select * from table2 where id = #?dataSourceRef=dataSource" />
<camel:choice>
<camel:when>
<camel:simple>${header.CamelSqlRowCount} == 0</camel:simple>
<camel:to uri="sql:insert into table2 (id, name) values (#, #)?dataSourceRef=dataSource" />
</camel:when>
</camel:choice>
<camel:to uri="mock:result" />
</camel:split>
</camel:route>
</camel:camelContext>
这里的问题是,当我到达insert into table2
时,原始消息(包含数据的消息)丢失了,因为我必须同时进行另一个查询(我在第二个表中检查数据)。我的方法好吗?如何检索包含数据的消息?