`
txf2004
  • 浏览: 6831266 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

分布式事务——可回滚的文件操作

 
阅读更多

在最近的开发中,遇到一个服务要执行多种类型操作的需求,例如:先执行1个文件操作,再执行2个数据库操作。

事务一致性要确保这1个文件操作和2个数据库操作必须同时执行或同时不执行。

try

{

using (TransactionScope scope = new TransactionScope())

{

//文件操作1…

//数据库操作1,2…

scope.Complete();

}

}

catch (System.Transactions.TransactionException ex)

{

//回滚

}

catch

{

//回滚

throw;

}

上述事务范围中,文件操作调用System.IO下的对象是不会自动回滚的,需要自定义在事务范围下的文件操作。

把文件操作封装到自定义的对象,对象要实现System.Transactions.IEnlistmentNotification接口,在事务范围进行对象的注册。

IEnlistmentNotification的使用参考

http://msdn.microsoft.com/zh-cn/library/system.transactions.ienlistmentnotification.aspx

分享到:
评论

相关推荐

    redis事务回滚工具

    基于SpringBoot的轻量级redis事务回滚机制,使用栈和ThreadLocal记录业务链的redis操作,发生异常进行回滚,参考了阿里巴巴Seata AT模式的db回滚策略:补偿回滚,记录前镜像与当前操作语句,反向解析生成补偿动作。...

    springboot多数据源即分布式事务解决方案

    实现系统对多数据源的操作。 实现系统对多数据源的分布式事务管理,包括事务的提交和回滚。

    jta分布式事务完成例子,测试通过

    例子虽小,可覆盖面广,设计spring载入.properties文件,spring配置jta和jotm分布式事务,设置数据源连接池,注解事务驱动。功能是在mysql上建立了两个数据库分别为dbone和dbtwo,在dbone里有表tb1,表中只有一个字段...

    修改Seata是一款开源的分布式事务解决方案

    Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务 一个典型的分布式事务过程:分布式事务处理过程的-ID+三组件模型 Transaction ID XID :全局唯一的事务ID ...

    分布式简易事务回滚框架:biz-center-base-transaction

    分布式简易事务回滚框架:biz-center-base-transaction

    分布式事务、spring cloud \微服务

    Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案 TC (Transaction Coordinator) - ...

    SQL 事务回滚解决 回滚无效的情况

    SQL 事务回滚解决回滚无效的情况 BEGIN TRY END TRY CAHTH

    分布式事务思想和分布式系统入门.txt

    3 SOA分布式事务解决方案 3.1 基于XA协议的两阶段提交方案 交易中间件与数据库通过 XA 接口规范,使用两阶段提交来完成一个全局事务, XA 规范的基础是两阶段提交协议。 第一阶段是表决阶段,所有参与者都将本事务...

    springboot多数据源即分布式事务解决方案,添加对多线程的支持

    实现系统对多数据源的操作。 实现系统对多数据源的分布式事务管理,包括事务的提交和回滚。

    SpringCloud Alibaba使用(四) - seata分布式事务.zip

    Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务 一个典型的分布式事务过程:分布式事务处理过程的-ID+三组件模型 Transaction ID XID :全局唯一的事务ID ...

    数据库试验,关于事务的创建撤销,事务的回滚等基本操作练习

    数据库试验,关于事务的操作。关于事务的创建撤销,事务的回滚等基本操作练习。

    Spring Boot多数据源(支持Spring声明式事务切换和回滚).pdf

    1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)

    java 数据库操作,事务回滚

    java 应用程序操作数据库实例,若出现sql异常则事务回滚。

    多数据源的分布式事务-已测试

    多数据源下的的分布式事务-已通过测试,两个数据库的状态始终保持一致,注释清楚,值得借鉴

    csdn-分布式事务demo.zip

    环境依赖:jdk1.8,seata,eureka,mysql 启动步骤: 1.新建两个数据seata_testseata_test2使用seata_test.sql脚本。 2.eureka服务 3.seata服务 4.分别启动good和order两个服务

    Spring+Mybatis整合事务回滚

    花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...

    TCC-Transaction分布式事务DEMO

    TCC-Transaction分布式事务DEMO,基于Mysql数据库的事务,包括分布式提交和回滚,例子完成,可以正常跑,基于Maven构建的项目

    电商系统的分布式事务调优

    本文从案例开始,我们团队...而我们的工程师在完成玩家获得道具和扣除余额的操作时,没有做到事务的一致性,即在扣除通宝失败时,应该回滚已经购买的游戏道具。 从这个案例中,我想你应该意识到了分布式事务的重要性。

    简单的c#事务回滚实例代码

    执行多条SQL语句对数据库进行操作,如果某个SQL语句执行中出错,那么要对之前的操作进行回滚,代码比较简单。

    Hmily柔性分布式事务解决方案 v2.2.1

    为您提供Hmily柔性分布式事务解决方案下载,Hmily是柔性分布式事务解决方案,提供了TCC 与 TAC 模式...功能:高可靠性:支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂易用性:提供零侵入性式的 Spring-

Global site tag (gtag.js) - Google Analytics