在最近的开发中,遇到一个服务要执行多种类型操作的需求,例如:先执行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。
分享到:
相关推荐
基于SpringBoot的轻量级redis事务回滚机制,使用栈和ThreadLocal记录业务链的redis操作,发生异常进行回滚,参考了阿里巴巴Seata AT模式的db回滚策略:补偿回滚,记录前镜像与当前操作语句,反向解析生成补偿动作。...
实现系统对多数据源的操作。 实现系统对多数据源的分布式事务管理,包括事务的提交和回滚。
例子虽小,可覆盖面广,设计spring载入.properties文件,spring配置jta和jotm分布式事务,设置数据源连接池,注解事务驱动。功能是在mysql上建立了两个数据库分别为dbone和dbtwo,在dbone里有表tb1,表中只有一个字段...
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务 一个典型的分布式事务过程:分布式事务处理过程的-ID+三组件模型 Transaction ID XID :全局唯一的事务ID ...
分布式简易事务回滚框架:biz-center-base-transaction
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案 TC (Transaction Coordinator) - ...
SQL 事务回滚解决回滚无效的情况 BEGIN TRY END TRY CAHTH
3 SOA分布式事务解决方案 3.1 基于XA协议的两阶段提交方案 交易中间件与数据库通过 XA 接口规范,使用两阶段提交来完成一个全局事务, XA 规范的基础是两阶段提交协议。 第一阶段是表决阶段,所有参与者都将本事务...
实现系统对多数据源的操作。 实现系统对多数据源的分布式事务管理,包括事务的提交和回滚。
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务 一个典型的分布式事务过程:分布式事务处理过程的-ID+三组件模型 Transaction ID XID :全局唯一的事务ID ...
数据库试验,关于事务的操作。关于事务的创建撤销,事务的回滚等基本操作练习。
1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)
java 应用程序操作数据库实例,若出现sql异常则事务回滚。
多数据源下的的分布式事务-已通过测试,两个数据库的状态始终保持一致,注释清楚,值得借鉴
环境依赖:jdk1.8,seata,eureka,mysql 启动步骤: 1.新建两个数据seata_testseata_test2使用seata_test.sql脚本。 2.eureka服务 3.seata服务 4.分别启动good和order两个服务
花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...
TCC-Transaction分布式事务DEMO,基于Mysql数据库的事务,包括分布式提交和回滚,例子完成,可以正常跑,基于Maven构建的项目
本文从案例开始,我们团队...而我们的工程师在完成玩家获得道具和扣除余额的操作时,没有做到事务的一致性,即在扣除通宝失败时,应该回滚已经购买的游戏道具。 从这个案例中,我想你应该意识到了分布式事务的重要性。
执行多条SQL语句对数据库进行操作,如果某个SQL语句执行中出错,那么要对之前的操作进行回滚,代码比较简单。
为您提供Hmily柔性分布式事务解决方案下载,Hmily是柔性分布式事务解决方案,提供了TCC 与 TAC 模式...功能:高可靠性:支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂易用性:提供零侵入性式的 Spring-