dubbo分布式事务解决方案_分布式事务解决方案 reliable-message

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:46   4804   0

介绍

549ea2b63feb2e43b16fb22e14835de8.png

RMQ(reliable-message-queue)是基于可靠消息的最终一致性的分布式事务解决方案。

中文文档

RMQ对接示例:

  • https://gitee.com/NuLiing/reliable-message-samples
  • https://github.com/a327919006/reliable-message-samples

框架定位

  • RMQ本身不生产消息队列,只是消息的搬运工。
  • RMQ框架提供消息预发送、消息发送、消息确认、消息恢复、消息管理等功能,结合成熟的消息中间件,解决分布式事务,达到数据最终一致性。

RMQ对接示例

介绍

RMQ对接示例,请先根据RMQ项目依赖,准备好RMQ运行环境。

中文文档

示例源码仓库地址

源码仓库地址https://gitee.com/NuLiing/reliable-message-sampleshttps://github.com/a327919006/reliable-message-samples

示例代码流程说明

示例代码模拟简单的充值业务,上层系统为支付系统,负责处理支付订单,下层系统为业务系统,负责处理充值订单以及操作账户金额。

1. 调用下层系统充值接口,生成充值订单与支付订单。2. 模拟银行回调上层系统支付成功接口。上层系统调用RMQ预发送消息 --> 执行业务操作(修改支付订单状态)--> 异步调用RMQ确认发送消息。3. 下层业务系统收到消息 --> 执行业务操作(修改支付订单状态,修改账户余额)--> 调用RMQ确认消费消息。

初始化示例代码数据库

下载项目源码并解压,执行 "数据库初始化SQL脚本",正常情况下会自动创建数据库(reliable-message-sample)以及生成3张表。"数据库初始化SQL脚本" 路径为:

/reliable-message-samples/sql/rmq-sample-init.sql

运行示例代码

运行RMQ

先根据RMQ中文文档《快速入门》,运行RMQ系统。


配置、运行示例代码

配置

配置文件路径:

/reliable-message-samples/spring-boot-sample/src/main/resources/application.yaml

配置文件说明:

# 运行端口server: port: 10010mybatis: typeAliasesPackage: com.cn.rmq.sample.model.po mapperLocations: classpath:com/cn/rmq/sample/mapper/*.xmlspring: # 数据库连接配置 datasource: url: jdbc:mysql://127.0.0.1:3306/reliable-message-sample?useUnicode=true&characterEncoding=utf-8 username: root password: root driver-class-name: com.mysql.jdbc.Driver hikari: connection-test-query: SELECT 1 # ActiveMQ配置 activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin# Dubbo配置dubbo: application: name: spring-boot-sample logger: slf4j registry: address: zookeeper://127.0.0.1:2181 protocol: name: dubbo port: 20882 scan: base-packages: com.cn.rmq.sample.service.impl

运行

模块基于SpringBoot构建,可使用Maven命令(mvn package)打成jar包运行(java -jar)。 调试阶段可直接在IDE中运行ServiceApplication。文件路径为:

/reliable-message-samples/spring-boot-sample/src/main/java/com/cn/rmq/service/BootSampleApplication.java

调用示例接口

示例代码集成了Swagger组件,方便接口调试。

访问地址: http://127.0.0.1:10010/swagger-ui.html

生成订单

调用接口成功后将生成待支付的充值订单与支付订单。接口响应数据data为订单ID,用于下一步模拟支付成功回调。

a74a0b93b7000a2e0d333dff6c8fda32.png
f66c6fca3bbaabfed806a4d897cfb61d.png

支付回调

模拟银行支付成功回调,成功调用接口后可查看数据库数据,充值订单、支付订单状态改变成已支付,账户金额已增加。

e7a820eddea2d237b450de3c87a192b2.png
0e1b743090d3c493d3aa8a3f69d03664.png
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP