BeetlSQL 3.1.0 发布,Spring Saga 事务支持

吃苹果的上帝 2020-11-18 09:51:27 ⋅ 383 阅读

本次发布增强了Saga在spring下的支持,使用kafka提供重试以及重试失败后放入丢弃队列里

Saga是用来在微服务中的长事务管理,具备ACID中的ACD,不具备I,隔离性。在一定业务条件下,可以使用Saga非常简单和方便的管理微服务事务。同理,也可以用于管理多库事务

Saga要求微服务提供回滚操作,然后如果需要回滚,有Saga编排调度各个微服务对应的回滚服务。BeetlSQL提供了SagaMapper,内置的操作都有对应的回滚操作,也提供@SagaSql,用户提供正向SQl,也提供回滚SQL。这样,在多库环境下,BeetlSQL能正确回滚数据而不依赖于数据库提供的事务

maven

<dependency>
  <groupId>com.ibeetl</groupId>
  <artifactId>beetlsql</artifactId>
  <version>3.1.0-RELEASE</version>
</dependency>
<dependency>
  <groupId>com.ibeetl</groupId>
  <artifactId>sql-saga-springkafa</artifactId>
  <version>3.1.0-RELEASE</version>
</dependency>
@Transactional(propagation = Propagation.NEVER)
public boolean normal(){
	SagaContext sagaContext = SagaContext.sagaContextFactory.current();
	try{
		UserInfoInDs1 ds1 = new UserInfoInDs1();
		ds1.setId(100);
		ds1.setName("ces");

		UserInfoInDs2 ds2 = new UserInfoInDs2();
		ds2.setId(100);
		ds2.setName("abs");
		//俩个数据库
		userInfoDs1Mapper.insert(ds1);
		userInfoDs2Mapper.insert(ds2);
		//模拟一个错误
		int a = 1/0;
	}catch(Exception ex){
		sagaContext.rollback();
		return false;
	}
	return true;
}

需要配置重试队列和丢弃队列名字,以及重试次数,以及kafka序列化方式

beetlsql-saga.kafka.retry-topic=retryTopic002
beetlsql-saga.kafka.fail-topic=failTopic002


spring.kafka.bootstrapServers=127.0.0.1:9092
spring.kafka.consumer.group-id=saga
spring.kafka.consumer.auto-offset-reset=latest
spring.kafka.listener.type=single
spring.kafka.listener.ack-mode=record

spring.kafka.consumer.value-deserializer=org.beetl.sql.saga.kafka.JacksonDeserializer
spring.kafka.producer.value-serializer=org.beetl.sql.saga.kafka.JacksonSerializer

全部评论: 0

    我有话说:

    BeetlSQL 3.0.10 发布,内置 sega 事务支持

    本次发布主要增加了分布式Sega事务支持,适合多数据源 按照社区建议,修改了了springboot 的 yml配置方式 修改了@Jackson和@UpdateTime,本来是用来作为例子,但社区

    「尝鲜」SpringBoot 快速整合Swagger 3.0

    第一步:Maven引入Swagger3.0 starter依赖 Maven项目中引入springfox-boot-starter依赖: <dependency> <

    Spring Boot 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5 发布

    Spring Boot 多个分支发布了新版本,分别是 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5。 Spring Boot 2.4.0-RC1 此版本是 

    Spring Boot Admin 2.3.1 发布,轻量的图形化监控工具

    Spring Boot Admin 2.3.1 发布,这是一个错误修正版本。现在可以从 maven 仓库 下载,支持 2.3.0 平滑升级 <dependency>  

    Spring Boot 2.1.0新特性 ,准备好了吗?!

    Spring Boot官方在10月30号正式发布了v2.1.0.RELEASE版本,由于本人最近比较忙,直到今天才着重抽空学习和了解这次升级一共带来了9大新特性,根据官方描述,正在逐渐支持 java

    【开源资讯】Spring Data 2020.0 RC2 发布

    Spring Data 2020.0 RC2 发布了。Spring Data 项目的目的是简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库、Map-Reduce 框架

    「转载」分布式事务方案 - SAGA模式

    性能与架构:杜亦舒原文:https://mp.weixin.qq.com/s/An6QbAOw6jhWxg7GDT56Ug 本文目的是讲清楚 SAGA 这种分布式事务解决方案的实现思路,不包括具体

    Spring Framework 5.3.3 发布,初步支持 JDK 17

    Spring Framework 5.3.3 现已发布Spring Framework 是一个分层应用程序框架,可在任何类型的部署平台上为基于 Java 的现代企业应用程序提供

    BeetlSQL 3.2.3 发布,Java 数据库访问工具

    SpringBoot集成新增参数 beetlsql.xxx1.s...

    Spring Cloud 2020.0.1 BUG 修复版本发布

    2021 首发, Spring Cloud 2020.0.1 (代号"Ilford",伊尔福德)版本发布,此版本 BUG 修复版本,可从 2020.0.0 版本平滑升级。目前已可以从 maven

    Spring Initializr 0.1.0 发布Spring 项目的快速开始生成器

    Spring Initializr 0.1.0 已经发布。 Spring initializr 是一个 Spring 项目的快速开始生成器。其提供了一个可扩展的 API 来生成基于 JVM

    微服务架构学习笔记:gRPC Spring Boot Starter 2.2.0 发布,及使用步骤

    gRPC Spring Boot Starter 项目是一个 gRPC 的 Spring Boot 模块。内嵌一个 gRPC Server 对外提供服务,并支持 Spring Cloud 的服务发现

    AppCode 2020.3.1 发布支持 Apple Silicon

    AppCode 2020.3.1 现已发布,并且用户可以在下载时选择支持 Apple Silicon 的版本。 具体更新内容 Swift:OptionSet 成员未在数组中解析 使用

    高并发下分布式事务的解决方案-MQ消息事务+最终一致性

    分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上

    架构实战篇(十五):Spring Boot 解耦之事件驱动

    通过使用spring 事件来解决业务代码的耦合

    FileZilla Client 3.53.0-rc1 发布,FTP 客户端

    FileZilla Client 3.53.0-rc1 发布了。FileZilla 是一种快速、可信赖的 FTP 客户端以及服务器端开源程序,具有多种特色、直观的接口。FileZilla

    Python 3.9.1 发布支持苹果 M1 和 macOS 11 Big Sur

    Python 3.9.1 已正式发布。Python 3.9.1 是 Python 3.9 的第一个维护版本,也是第一个在 Apple Silicon 上原生支持 macOS 11 Big Sur 的

    Angular 11.1.0 正式发布支持 TypeScript 4.1

    。 近日,Angular 11.1.0 正式发布...

    Scala 3 来了,Dotty 发布 3.0.0-M1 版本

    Dotty 发布3.0 的首个里程碑版本 3.0.0-M1,Dotty 作为 Scala 尝试新的语言概念以及编译器技术的研究平台,它最终将成为 Scala 3.0。 Dotty 对