前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式事务系列--SpringCloud整合byteTCC框架0.5.x版本1

分布式事务系列--SpringCloud整合byteTCC框架0.5.x版本1

作者头像
IT云清
发布2022-05-07 16:39:42
3720
发布2022-05-07 16:39:42
举报
文章被收录于专栏:IT云清IT云清

本文详细记录下,SpringCloud框架整合byteTCC分布式事务框架的过程。这里只展示,一个是springboot项目,引入byteTCC必备的基础步骤,和简单的tcc的业务逻辑过程。请优先确定项目使用的springboot和springcloud版本,然后选择对应的byteTCC版本进行整合,0.4.x和0.5.x整合差异较大。总体而言,spring boot 1.x得用0.4.x的版本,0.5.x版本得用spring boot 2.x。

版本信息

  • 1.SpringCloud Greenwich.RELEASE
  • 2.SpringBoot 2.1.2.RELEASE
  • 3.byteTCC 0.5.0-BETA2
  • 4.jdk 8.0及以上版本

1.创建company-server项目

创建一个SpringBoo web项目,先贴下完整的项目结构:

2.引入byteTCC依赖

SpringCloud其他依赖这里不做展示,仅展示byteTCC的依赖:

代码语言:javascript
复制
		<!--byteTcc-->
		<dependency>
			<groupId>org.bytesoft</groupId>
			<artifactId>bytetcc-supports-springcloud</artifactId>
			<version>0.5.0-BETA2</version>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.cloud</groupId>
					<artifactId>spring-cloud-zookeeper-core</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
				<exclusion>
					<groupId>log4j</groupId>
					<artifactId>log4j</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.springframework.cloud</groupId>
					<artifactId>spring-cloud-zookeeper-discovery</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.netflix.eureka</groupId>
					<artifactId>eureka-client</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.springframework.cloud</groupId>
					<artifactId>spring-cloud-consul-discovery</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

3.启动类注解

在启动类需要添加几个注解:

代码语言:javascript
复制
package com.java4all;

import org.bytesoft.bytetcc.supports.springcloud.config.SpringCloudSecondaryConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Import;
/**
 * 按请求粒度负载均衡(使用MongoDB存储事务日志):需引入SpringCloudConfiguration;
 * 按事务粒度负载均衡(使用文件系统存储事务日志):需引入SpringCloudSecondaryConfiguration;
 */
@EnableEurekaClient
@SpringBootApplication(scanBasePackages = "com.java4all")
@MapperScan("com.java4all.dao")
@Import(SpringCloudSecondaryConfiguration.class)
@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class})
//使用文件存储时,不需要配置mongodb
public class CompanyServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(CompanyServerApplication.class, args);
	}

}

4.配置文件

配置数据库时,注意type参数需要指定:

代码语言:javascript
复制
server:
  port: 8013
spring:
  application:
    name: company-server
  datasource:
    url: jdbc:mysql://xxx.xx.xxx.xx:3306/company?useAffectedRows=true
    username: xxxx
    password: xxx
    driver-class-name: com.mysql.jdbc.Driver
    type: org.apache.commons.dbcp2.BasicDataSource
    #这个type必须指定,否则会抛出: org.springframework.jdbc.CannotGetJdbcConnectionException:  Failed  to  obtain  JDBC  Connection;
eureka:
  client:
    service-url:
      default: http://localhost:8761/eureka
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.java4all.entity

5.创建数据库表

在参与分布式事务操作的表所在的库,必须添加bytejta表;

这里同时添加一个company表,方便演示:

代码语言:javascript
复制
CREATE TABLE `company` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `money` decimal(10,0) DEFAULT NULL,
  `frozen` decimal(10,0) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

CREATE TABLE `bytejta` (
  `xid` varchar(32) NOT NULL,
  `gxid` varchar(40) DEFAULT NULL,
  `bxid` varchar(40) DEFAULT NULL,
  `ctime` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`xid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `company` (`id`, `money`, `frozen`) VALUES ('1', '10000', '0');
涉及分布式事务的数据库必须创建bytejta表,此表会记录事务相关的数据,事务完成后数据会自动删除。

下一篇:分布式事务系列–SpringCloud整合byteTCC框架0.5.x版本2

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.创建company-server项目
  • 2.引入byteTCC依赖
  • 3.启动类注解
  • 4.配置文件
  • 5.创建数据库表
    • 涉及分布式事务的数据库必须创建bytejta表,此表会记录事务相关的数据,事务完成后数据会自动删除。
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档