微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

litx 轻量级分布式事务框架

程序名称:litx

授权协议: Apache

操作系统: 跨平台

开发语言: Java

litx 介绍

litx 是一个基于补偿的轻量级分布式事务框架。(目前只支持 dubbo,未来计划支持 http 等其他 rpc 调用的补偿)

  • 代码逻辑无侵入

  • 和 spring 事务无缝结合(内部实现是集成 spring 的事务管理器,靠 @transactional标注开启)

  • 自动回滚补偿接口

  • 如回滚异常提供 hook 接口可供扩展,当回滚失败时,可以拿到数据自行可作处理。

Quick Start

也可以参考 litx-test 的测试用例,其工程演示了在 dubbo 环境下的测试情况。

也可参照以下代码进行快速配置

第一步 定义你相关接口的 rollback 接口。假设你的 dubbo 方法
submitOrder,回滚接口命名规则为rollbackSubmitOrder,请求参数定义为你submitOrder的返回类型。加上spring的事务标注@Transactional
并且再你的接口上加入 @Compensable标注

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"/>

第三步 替换认的 spring 事务管理器

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

如果你想处理回滚异常的数据 请定义自己的类,实现 RollbackInvokeHook 接口。并把自己的类注册到 spring 容器内就可以。litx
启动的时候会自动扫描到。

测试用例说明

测试工程提供了一个 dubbo-provider,首先得启动他,用 Runner 的 main 启动(数据源配置请重新配置),然后启动 dubbo-
consumer consumer 的 test 用例演示了一个用例:consumer 先调用 provider 的 test1,再调用
test2。test2 代码里主动抛错。test1 回滚,test1 回滚的时候主动抛错,然后被 consumer 自定义的 hook 捕获到。

litx 官网

https://gitee.com/bryan31/litx

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐