我剛開始使用Apache Camel,我想嘗試同步兩個表。兩個表都有兩列,分別是「id」和「name」。該方案將查詢第一個表,檢查第二個表中每個記錄的存在,並插入不存在的每個記錄。這裏是我的嘗試:使用Apache Camel同步兩個表
<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
,原來消息的時間(包含數據的一個)丟失,因爲我不得不做出另一個查詢在此期間(其中我檢查第二個表中的數據)。我的方法很好,我如何檢索包含數據的消息?
這幫了我。對於Postgresql,我做了「插入......在衝突時更新集...」。 – Mustafa