1 回答

TA貢獻1995條經(jīng)驗 獲得超2個贊
我認為這不是afterCommit
向下游發(fā)送消息的正確位置。
應(yīng)該有足夠的服務(wù)激活器來標記 POJO 方法@Transactional
。這樣,事務(wù)將完全圍繞此方法調(diào)用開始和結(jié)束。該方法的結(jié)果將被發(fā)送到輸出通道,恰好在該事務(wù)提交之后。
更新
實現(xiàn)您的要求的最佳方式是<gateway>
圍繞您的 Chain1。這樣,TX 將在那里提交,然后再從網(wǎng)關(guān)生成對 Chain2 的回復。
當TransactionSynchronization::afterCommit
QueueChannel 準備好輪詢消息時,不能保證 TX 將在 DB 上提交。雖然您可以JdbcChannelMessageStore
用于消息的事務(wù)性存儲。這樣,在數(shù)據(jù)庫中的 TX 提交之前,它們將不可見。
<gateway>
在文檔中查看更多信息: https ://docs.spring.io/spring-integration/docs/current/reference/html/messaging-routing-chapter.html#_calling_a_chain_from_within_a_chain
添加回答
舉報