第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

事務(wù)中的更改子集有時在提交后不久不可見

事務(wù)中的更改子集有時在提交后不久不可見

翻翻過去那場雪 2022-06-15 16:01:39
讓我們考慮以下上下文:2 個 spring 集成通道,它們分別位于單獨的數(shù)據(jù)庫事務(wù)中。在第一個事務(wù)結(jié)束時,一條消息被放入第二個通道。在第一個通道中,在數(shù)據(jù)庫中創(chuàng)建元素,這些元素稍后被從第一個通道發(fā)送到第二個通道的相應(yīng)消息使用。為了確保通道 1 的事務(wù)在觸發(fā)第二個通道之前完全提交,我們的子類JpaTransactionManager在TransactionSynchronization它prepareForCommit從JpaTransactionManager流程(通道 1)如下所示:做所有的消息處理和數(shù)據(jù)庫處理流程的最后一步注冊 a在階段TransactionSynchronization中執(zhí)行 a以將消息發(fā)送到通道 2MessageChannel.sendafterCommit我的理解是,在將消息發(fā)送到第二個通道(in afterCommit)時,通道 1 的數(shù)據(jù)庫事務(wù)中所做的所有更改都被刷新并提交?,F(xiàn)在第二個通道做了一些工作(如 MQ PUT),然后更新在第一個流中創(chuàng)建的條目。我們現(xiàn)在觀察到存儲庫方法在數(shù)據(jù)庫中沒有返回任何條目,但稍后它在表中可見。然而,在第一個通道的事務(wù)中也創(chuàng)建的其他條目是可見的。這種情況每隔幾千條消息才會發(fā)生一次,通常它們在那里,但有時它們在通道 1 提交事務(wù)幾毫秒后對第二個通道不可見。我創(chuàng)建了一個應(yīng)該說明它的圖像:這Chain 1是第一個由多個ServiceActivators執(zhí)行數(shù)據(jù)庫工作的鏈組成的鏈,一個生成更多消息的拆分器,然后是另一個ServiceActivator我命名的鏈,SENDER它注冊了TransactionSynchronization(所以我的理解)應(yīng)該在紅色事務(wù)之后將例如 3 個生成的消息發(fā)送到鏈 2已完全提交,因此在藍色事務(wù)開始之前。我注意到的一件事是,有時存在但有時不存在的條目都在(不是故意)使用的一種方法中,javax.transaction.Transactional而不是org.springframework.transaction.annotation.Transactional. 但是,我們使用的是spring core 5.0.8.RELEASE,在其他問題中,我已經(jīng)看到自spring 4.2.x以來這應(yīng)該產(chǎn)生0差異。
查看完整描述

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::afterCommitQueueChannel 準備好輪詢消息時,不能保證 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


查看完整回答
反對 回復 2022-06-15
  • 1 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號