2014-01-21 93 views
1

我有一個Spring集成jdbc:inbound-channel-adapter從數據庫中讀取。一個重要的要求是相同的行不會被讀取兩次。一種可能的方法是使用update屬性在使用與query屬性相同的where子句讀取的行上設置標誌。但是,如果在工作流中進一步發生異常(使用行映射器轉換結果集,編組爲XML,然後放置在外部系統的出站隊列中),那麼這些行將不會被重新讀取當應用程序恢復時。在這種情況下,Spring Integration是否有更好的策略?Spring集成JDBC入站通道適配器 - 避免重複讀取

另一個問題是,鑑於上述要求,將Spring Batch的提供更強大的解決方案,如果是這樣,怎麼會這樣執行? 感謝

+0

你能解釋一下爲什麼不把事務用於你的情況?如果會出現一些錯誤,在DB的任何更改將rollbacked –

+0

_those行不會被重新讀取,當應用程序回來up_ 那是什麼意思? – IRus

回答

0

看起來你應該使用short TX and channel shift技術:

<int-jdbc:inbound-channel-adapter channel="executorChannel"/> 

<int:channel id="executorChannel"> 
    <int:dispatcher task-executor="executor"/> 
</int:channel> 

有你的消息將被轉移到不同的線程JDBC TX之外。最後一個將永遠承諾。所以,任何downstrem問題都不會影響你在DB中的行數 - 它們將被標記爲processed,並且不會再被讀取一次。

相關問題