<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          litx輕量級(jí)分布式事務(wù)框架

          聯(lián)合創(chuàng)作 · 2023-10-01 07:08

          litx 是一個(gè)基于補(bǔ)償?shù)妮p量級(jí)分布式事務(wù)框架。(目前只支持 dubbo,未來(lái)計(jì)劃支持 http 等其他 rpc 調(diào)用的補(bǔ)償)

          • 對(duì)代碼邏輯無(wú)侵入

          • 和 spring 事務(wù)無(wú)縫結(jié)合(內(nèi)部實(shí)現(xiàn)是集成 spring 的事務(wù)管理器,靠 @transactional標(biāo)注開啟)

          • 自動(dòng)回滾補(bǔ)償接口

          • 如回滾異常提供 hook 接口可供擴(kuò)展,當(dāng)回滾失敗時(shí),可以拿到數(shù)據(jù)自行可作處理。

          Quick Start

          也可以參考 litx-test 的測(cè)試用例,其工程演示了在 dubbo 環(huán)境下的測(cè)試情況。

          也可參照以下代碼進(jìn)行快速配置

          第一步 定義你相關(guān)接口的 rollback 接口。假設(shè)你的 dubbo 方法為 submitOrder,回滾接口命名規(guī)則為rollbackSubmitOrder,請(qǐng)求參數(shù)定義為你submitOrder的返回類型。加上spring的事務(wù)標(biāo)注@Transactional 并且再你的接口上加入 @Compensable標(biāo)注

          public interface DemoService {
          	
          	@Compensable
              	String test1();
          
          	@Compensable
          	String test2();
          	
          	void rollbackTest1(String str);
          	
          	void rollbackTest2(String str);
          }

          第二步 spring 配置中加入以下定義

          <bean id="litxDubboDefinationScanner" class="com.thebeastshop.litx.spring.LitxDubboDefinationScanner"/>

          第三步 替換默認(rèn)的 spring 事務(wù)管理器

          <bean name="transactionManager" class="com.thebeastshop.litx.transaction.LitTransactionManager">
          	<property name="dataSource" ref="dataSource"/>
          </bean>

          如果你想處理回滾異常的數(shù)據(jù) 請(qǐng)定義自己的類,實(shí)現(xiàn) RollbackInvokeHook 接口。并把自己的類注冊(cè)到 spring 容器內(nèi)就可以。litx 啟動(dòng)的時(shí)候會(huì)自動(dòng)掃描到。

          測(cè)試用例說(shuō)明

          測(cè)試工程提供了一個(gè) dubbo-provider,首先得啟動(dòng)他,用 Runner 的 main 啟動(dòng)(數(shù)據(jù)源配置請(qǐng)重新配置),然后啟動(dòng) dubbo-consumer consumer 的 test 用例演示了一個(gè)用例:consumer 先調(diào)用 provider 的 test1,再調(diào)用 test2。test2 代碼里主動(dòng)拋錯(cuò)。test1 回滾,test1 回滾的時(shí)候主動(dòng)拋錯(cuò),然后被 consumer 自定義的 hook 捕獲到。

          瀏覽 17
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线精品福利导航 | 成人三级久久久 | 色婷婷在线视频 | 每日日韩欧美 | 欧美日韩逼 |