分布式事务实现

事务配置
环境准备:
在读写分离的基础上进行事务的配置
引入maven依赖:
以下两种依赖选择一个就可以,如果想要强一致性就引入XA依赖,如果想要最终一致性就引入Base依赖

        <!--Sharding-JDBC事务-XA模式(强一致性事务)-->
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-transaction-xa-core</artifactId>
            <version>4.1.1</version>
        </dependency>

        <!--Sharding-JDBC事务-Seata模式(最终一致性事务)-->
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-transaction-base-seata-at</artifactId>
            <version>4.1.1</version>
        </dependency>

在启动类上添加:
@SpringBootApplication(exclude = {JtaAutoConfiguration.class, PageHelperAutoConfiguration.class})
@EnableTransactionManagement
PageHelperAutoConfiguration是后续分页插件使用的

在这里插入图片描述

使用:
在service方法上加上注解 @ShardingTransactionType(TransactionType.XA) 和 @Transactional ,两个注解结合使用

import org.apache.shardingsphere.transaction.annotation.ShardingTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.transaction.annotation.Transactional;


	@Override
    @ShardingTransactionType(TransactionType.XA)
    @Transactional
    public void batchInsertOrder() {
        for(int i=0;i<30;i++){
            OrderEntity entity = new OrderEntity();
            entity.setId(i);
            entity.setName("q");
            entity.setOtherId(21);
            orderMapper.insertOrder(entity);
        }
    }

一般情况下不需要更改配置,但是需要自定义配置的话可以在:项目的resource目录下,新建一个jta.properties文件,在里面可以编写自定义的配置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java分布式事务实现可以通过以下几种方式: 1. 两阶段提交(2PC):2PC是一种经典的分布式事务协议,它基于事务协调者(Coordinator)和多个参与者(Participants)之间的协作来实现事务的原子性。在该协议中,事务协调者负责协调各个参与者的提交或回滚操作,并保证所有参与者的操作一致性。 2. TCC(Try-Confirm-Cancel):TCC是一种补偿型的分布式事务解决方案,它通过将一个分布式事务拆分为三个阶段:尝试阶段(Try)、确认阶段(Confirm)和取消阶段(Cancel),来保证事务的一致性。在TCC中,每个参与者需要实现自己的try、confirm和cancel方法,用于执行事务的各个阶段操作。 3. 消息队列:消息队列可以作为一种异步的分布式事务解决方案。在这种方案中,事务的操作被封装为消息,并通过消息队列进行传递。参与者接收到消息后,执行本地事务操作,并发送确认消息给事务协调者。事务协调者在收到所有参与者的确认消息后,决定提交或回滚整个分布式事务。 4. 最大努力通知(Best Effort Delivery):最大努力通知是一种基于异步通知的分布式事务解决方案。在该方案中,事务协调者发起事务请求后,不等待参与者的响应,而是直接返回成功。参与者在执行完本地事务后,异步通知事务协调者。事务协调者在收到所有参与者的通知后,判断是否需要进行回滚操作。 需要注意的是,以上每种方案都有其适用场景和限制条件。在选择具体的分布式事务实现方式时,需要根据业务场景、系统架构和性能需求等因素进行综合考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值