2015-05-07 55 views
1

我正在使用jdbc入站通道適配器與下面的典型配置來從MYSQL數據庫檢索記錄。問題是如何使jdbc入站通道適配器在多節點環境中工作?不同的節點將有機會獲得一個相同的記錄進行處理。我知道這可能是一個古老的問題,但我目前無法找到解決方案。春季集成jdbc適配器多節點

<int-jdbc:inbound-channel-adapter query="select * from messages where state='NEW'" 
    channel="jdbcChannel" data-source="datasource" update="update messages set state='PROCESSING' where id in (:id)" 
    row-mapper="messageRowMapper" max-rows-per-poll="1"> 
</int-jdbc:inbound-channel-adapter> 

回答

0

是的,您應該按照Gary指出的爲<poller>提供交易,但除此之外,您應該保證一筆交易將阻止另一筆交易完成。爲此,您應該爲SELECT提供FOR UPDATELOCK IN SHARE MODE提示。

更多的信息在MySQL Docs或這個回答:MySQL 'select for update' behaviour