环境:springboot2.3.9 + RocketMQ4.8.0
1、消息如果broker收到了commit/rollback消息 :
如果收到了commit,最终致性则broker认为整个事务是分布没问题的,执行成功的式事。那么会下发消息给Consumer端消费。可靠
如果收到了rollback,消息则broker认为本地事务执行失败了,最终致性broker将会删除Half Message,不下发给Consumer端。
2、如果broker未收到消息(如果执行本地事务突然宕机了,相当执行本地事务(executeLocalTransaction)执行结果返回unknow,则和broker未收到确认消息的情况一样处理。):
broker会定时回查本地事务的执行结果:如果回查结果是本地事务已经执行则返回commit,若未执行,则返回unknow。
Producer端回查的结果发送给Broker。Broker接收到的如果是commit,则broker视为整个事务执行成功,如果是rollback,则broker视为本地事务执行失败,broker删除Half Message,不下发给consumer。如果broker未接收到回查的结果(或者查到的是unknow),则broker会定时进行重复回查,以确保查到最终的事务结果。重复回查的时间间隔和次数都可配。
图片
建立父子工程,两个子项目account-manager,integral-manager。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.0</version></dependency>
server: port: 8081---rocketmq: nameServer: localhost:9876 producer: group: pack-mq---spring: jpa: generateDdl: false hibernate: ddlAuto: update openInView: true show-sql: true---spring: datasource: driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/account?serverTimeznotallow=GMT%2B8 username: root password:(责任编辑:百科)
同业存单纳入MPA迎“首考” 银行摆脱“同业依赖症”亟待解决
爱美客(300896.SZ)年报推10转8派35元 除权除息日为2021年3月16日
正商实业(00185.HK)年度纯利跌32.0% 每股基本盈利为人民币7.04分