2012-06-01 33 views
0

我正在使用配置了jms:message-driven-channel-gateway的SI。我的用例是從隊列中接收消息,通過JDBC將其保存到數據庫,從隊列中提交消息,然後讓此消息根據其類型繼續流經各個通道。如果消息隨後出現錯誤,這是可以的,因爲我已將原始數據存儲在數據庫中,因此可以重播。Spring Integration,JMS入站通道網關和事務

我的問題是嘗試在數據庫保持後立即從隊列提交事務。這實際上是中間流程,我只能在春季交易管理中嘗試並最終落實。這是不合適的,就好像在數據庫持久化之後拋出錯誤一樣,它仍然將消息留在JMS隊列上,因爲這是外部事務的起源。

那麼,是否有一種簡單的方法將消息從JMS隊列中提取出來,保存到數據庫中,然後將其從隊列中提取出來?

謝謝!

回答

0

數據庫提交後您需要執行異步操作 - 數據庫更新後使用ExecutorChannel或QueueChannel;下游流將在另一個線程上運行,交易將在切換後提交。

相關問題