亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

感覺無法做到事務的統一控制,為什么?

感覺無法做到事務的統一控制,為什么?

胡說叔叔 2023-04-01 22:18:47
你好,想請教個問題:     剛才拜讀了下 resty 的源碼,看到關于多數據源事物控制實現的核心是如下的(TransactionAspect 類中): for (int i = 0; i < names.length; i++) {           dataSourceMeta = Metadata.getDataSourceMeta(names[i]);           dataSourceMeta.initTransaction(readonlys.length == 1 ? readonlys[0] : readonlys[i], levels.length == 1 ? levels[0] : levels[i]);           dataSourceMetas.add(dataSourceMeta);         }         //執行操作         result = ih.invoke(proxy, method, args);         for (DataSourceMeta dsm : dataSourceMetas) {           dsm.commitTransaction();         }       } catch (Throwable t) {         for (DataSourceMeta dsm : dataSourceMetas) {           dsm.rollbackTransaction();         }         String message = t.getMessage();         Throwable cause = t.getCause();         if (message == null) {           if (cause != null) {             message = cause.getMessage();           }         }感覺無法做到事務的統一控制,例如第一個數據源正常提交后,第二個數據源提交事務時出現異常時,是不能夠回滾第一個數據源的事務的。后經測試也證明確實無法回滾。
查看完整描述

2 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

理論上也不行啊,除非模式是像xa協議那樣,有兩段提交,要不然你不知道另一個事務是否會錯誤。

查看完整回答
反對 回復 2023-04-03
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

分布式事務從來都是大難題。一般都是想辦法避開,不然實現太麻煩,性能也難以保障。

查看完整回答
反對 回復 2023-04-03
  • 2 回答
  • 0 關注
  • 302 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號