先了解Sharding-jdbc、Seata、Nacos这三样东西各自的作用以及单独使用时的配置。
整合代码已放在github,详细步骤章节请搭配此项目看,欢迎start
如果已经做过Seata + Nacos的整合的,直接看最后的Seata结合Sharding-jdbc章节
我之前写过,不再赘述,引流:Seata-初体验以及避坑
参考文档:seata-example
nacos服务端新增配置seata.properties
application.yml增加seata配置
# 服务发现
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
username: nacos
password: nacos
application:
name: order-service
# seata配置
seata:
enabled: true
application-id: ${spring.application.name}
tx-service-group: ${spring.application.name}-tx-group
# 配置中心
config:
type: nacos
nacos:
serverAddr: localhost:8848
dataId: "seata.properties"
username: nacos
password: nacos
# 注册中心
registry:
type: nacos
nacos:
application: seata-server
server-addr: localhost:8848
username: nacos
password: nacos
# seata默认使用cglib代理,整合sharding-jdbc会爆错,提示ShardingSphereDataSource无法序列化,有知道怎么解决的朋友,诚心希望告知下
use-jdk-proxy: true
就是普通的springboot整合Sharding-jdbc,细说的话内容太多,不赘述。
可参考官方文档和我的案例工程
添加Sharding-jdbc 柔性事务jar包
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-transaction-base-seata-at</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
每个分片数据库添加undo_log表
classpath(springboot中就是resource目录)中增加seata.conf文件
将Seata的事务(上面)注解换成Sharding-jdbc(下面两行)的
// seata事务注解
@GlobalTransactional
@Transactional // spring的事务注解
@ShardingSphereTransactionType(TransactionType.BASE) // Sharding-jdbc柔性事务
有没有大佬知道怎么处理Seata整合Sharding-jdbc时,cglib序列化ShardingSphereDataSource报错的问题?欢迎讨论
手机扫一扫
移动阅读更方便
你可能感兴趣的文章