Apache ShardingSphere 提供 XA 事务,集成了 Narayana 的实现。
引入 Maven 依赖
<properties>
<narayana.version>5.12.4.Final</narayana.version>
<jboss-transaction-spi.version>7.6.0.Final</jboss-transaction-spi.version>
<jboss-logging.version>3.2.1.Final</jboss-logging.version>
</properties>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
<!-- 使用 XA 事务时,需要引入此模块 -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-transaction-xa-core</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-transaction-xa-narayana</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.narayana.jta</groupId>
<artifactId>jta</artifactId>
<version>${narayana.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.narayana.jts</groupId>
<artifactId>narayana-jts-integration</artifactId>
<version>${narayana.version}</version>
</dependency>
<dependency>
<groupId>org.jboss</groupId>
<artifactId>jboss-transaction-spi</artifactId>
<version>${jboss-transaction-spi.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>${jboss-logging.version}</version>
</dependency>
可以通过在项目的 classpath 中添加 jbossts-properties.xml
来定制化 Narayana 配置项。
详情请参见 Narayana 官方文档 。
Yaml:
- !TRANSACTION
defaultType: XA
providerType: Narayana
SpringBoot:
spring:
shardingsphere:
props:
xa-transaction-manager-type: Narayana
Spring Namespace:
<shardingsphere:data-source id="xxx" data-source-names="xxx" rule-refs="xxx">
<props>
<prop key="xa-transaction-manager-type">Narayana</prop>
</props>
</shardingsphere:data-source>