1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

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

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

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

        • 和 spring 事務(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è)試用例說明

        測(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)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            色五月首页| 欧美综合网站 | 97国产视频在线 | 91久久婷婷国产一区二区三区 | www.艹艹艹 | 亚洲人成网77777色在线播放 | 4438成人视频 | 久久很很 | 人人干人人摸人人操 | 国产午夜精品久久久久精 |