温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

spring+shardingjdbc+Atomikos分布式事务配置是什么

发布时间:2021-10-20 16:21:02 来源:亿速云 阅读:220 作者:柒染 栏目:大数据

本篇文章给大家分享的是有关spring+shardingjdbc+Atomikos分布式事务配置是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

分表和其他表在一个库里,满足分布式事务,

pom配置:

<!-- shardingjdbc --><dependency>    <groupId>org.apache.shardingsphere</groupId>    <artifactId>sharding-jdbc-spring-namespace</artifactId>    <version>4.0.0-RC1</version></dependency><dependency>    <groupId>org.apache.shardingsphere</groupId>    <artifactId>sharding-jdbc-core</artifactId>    <version>4.0.0-RC1</version></dependency><dependency>    <groupId>org.apache.shardingsphere</groupId>    <artifactId>sharding-transaction-xa-core</artifactId>    <version>4.0.0-RC1</version></dependency>

数据源配置:

<bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">    <property name="uniqueResourceName" value="dataSource"/>    <property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>    <property name="xaProperties">        <props>            <prop key="url">jdbc:mysql://${jdbc.host}/${jdbc.database}</prop>            <prop key="user">${jdbc.username}</prop>            <prop key="password">${jdbc.password}</prop>        </props>    </property>    <property name="minPoolSize" value="20" />    <property name="maxPoolSize" value="50" />    <property name="borrowConnectionTimeout" value="30" />    <!--<property name="testQuery" value="select 1" />-->    <property name="maintenanceInterval" value="60" />    <property name="maxIdleTime" value="60" />    <property name="maxLifetime" value="60"/>    <property name="loginTimeout" value="60" /></bean>
<!-- 分表数据源配置,分表策略--><bean id="preciseModuloTableShardingAlgorithm" class="com.sharding.algorithm.TableShardingAlgorithm"/><sharding:standard-strategy id="tableShardingStrategy" sharding-column="order_id"                            precise-algorithm-ref="preciseModuloTableShardingAlgorithm"/><sharding:data-source id="shardingDataSource">    <sharding:sharding-rule data-source-names="dataSource">        <sharding:table-rules>            <sharding:table-rule logic-table="t_order" table-strategy-ref="tableShardingStrategy"  actual-data-nodes="dataSource.t_order${0..2}" />        </sharding:table-rules>    </sharding:sharding-rule></sharding:data-source>

分别为两个数据源配上sqlSessionFactory和MapperScannerConfigurer(为了省事只配了一个)

<bean id="shardingSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    <property name="dataSource" ref="shardingDataSource"/>    <property name="mapperLocations" value="classpath:sharding/mapper/*.xml"/>    <property name="configLocation"  value="classpath:spring/mybatis-config.xml"/>    <property name="typeAliasesPackage" value="sharding.entity" /></bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">    <property name="basePackage" value="sharding.mapper"/>    <property name="sqlSessionFactoryBeanName" value="shardingSessionFactory"/></bean>

分布式事务配置:

<!-- 分布式事务 --><bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">    <property name="forceShutdown" value="true"/></bean><bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">    <property name="transactionTimeout" value="300"/></bean><bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">    <property name="transactionManager" ref="atomikosTransactionManager"/>    <property name="userTransaction" ref="atomikosUserTransaction"/></bean><tx:annotation-driven transaction-manager="transactionManager"/>

分表策略:

public final class TableShardingAlgorithm implements PreciseShardingAlgorithm<Long> {    @Override    public String doSharding(final Collection<String> availableTargetNames, final PreciseShardingValue<Long> shardingValue) {for (String each : availableTargetNames) {if (each.endsWith(shardingValue.getValue() % 2 + "")) {return each;            }
        }throw new UnsupportedOperationException();    }
}

以上就是spring+shardingjdbc+Atomikos分布式事务配置是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI