package com.xiaoge.mq;
import com.xiaoge.domain.OperateIntergralVo;
import com.xiaoge.domain.OrderInfo;
import com.xiaoge.service.IOrderInfoService;
import com.alibaba.fastjson.JSON;
import org.apache.rocketmq.spring.annotation.RocketMQTransactionListener;
import org.apache.rocketmq.spring.core.RocketMQLocalTransactionListener;
import org.apache.rocketmq.spring.core.RocketMQLocalTransactionState;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.nio.charset.Charset;
/**
* Created by wolfcode-lanxw
*/
@Component
@RocketMQTransactionListener(txProducerGroup = "tx_group")
public class OrderTransactionMessageListener implements RocketMQLocalTransactionListener {
@Autowired
private IOrderInfoService orderInfoService;
//执行本地事务
@Override
public RocketMQLocalTransactionState executeLocalTransaction(Message message, Object o) {
System.out.println("2.执行本地事务方法");
byte[] contents = (byte[]) message.getPayload();
String objStr = new String(contents, Charset.defaultCharset());
OperateIntergralVo vo = JSON.parseObject(objStr,OperateIntergralVo.class);
System.out.println(vo);
String orderNo = (String) o;
try{
//本地业务逻辑
orderInfoService.updateRefundStatus(orderNo);
System.out.println("3.执行成功");
return RocketMQLocalTransactionState.UNKNOWN;
}catch(Exception e){
e.printStackTrace();
System.out.println("4.执行失败");
return RocketMQLocalTransactionState.ROLLBACK;
}
}
//回查方法
@Override
public RocketMQLocalTransactionState checkLocalTransaction(Message message) {
System.out.println("9.回查方法");
String orderNo = (String) message.getHeaders().get("orderNo");
OrderInfo orderInfo = orderInfoService.find(orderNo);
if(OrderInfo.STATUS_REFUND.equals(orderInfo.getStatus())){
//已经退款成功,说明本地事务执行成功
System.out.println("10.commit");
return RocketMQLocalTransactionState.COMMIT;
}else{
//说明本地事务执行失败.
System.out.println("11.rollback");
return RocketMQLocalTransactionState.ROLLBACK;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
spingboot-rocketmq事务消息
共66个文件
class:25个
java:17个
xml:15个
需积分: 5 2 下载量 160 浏览量
2023-09-16
19:06:37
上传
评论
收藏 62KB ZIP 举报
温馨提示
rocketmq事务消息, 使用场景, 最终一致性(而不是强一致性)
资源推荐
资源详情
资源评论
收起资源包目录
RocketMQ事务消息案例.zip (66个子文件)
rocketmq
rocketmq-consumer
pom.xml 3KB
src
test
java
main
resources
application.yml 617B
java
com
xiaoge
mq
OrderInfoListener.java 781B
mapper
AccountLogMapper.xml 397B
AccountLogMapper.java 247B
UsableIntegralMapper.java 236B
UsableIntegralMapper.xml 395B
service
IIntegralService.java 328B
impl
IntegralServiceImpl.java 755B
ConsumerApp.java 441B
domain
UsableIntegral.java 558B
AccountLog.java 591B
OperateIntergralVo.java 362B
.idea
jarRepositories.xml 1KB
workspace.xml 5KB
misc.xml 537B
compiler.xml 841B
modules.xml 441B
.gitignore 184B
encodings.xml 361B
target
classes
application.yml 617B
com
xiaoge
mq
OrderInfoListener.class 1KB
mapper
AccountLogMapper.xml 397B
UsableIntegralMapper.class 366B
AccountLogMapper.class 227B
UsableIntegralMapper.xml 395B
service
impl
IntegralServiceImpl.class 1KB
IIntegralService.class 251B
ConsumerApp.class 801B
domain
AccountLog.class 2KB
OperateIntergralVo.class 811B
UsableIntegral.class 2KB
generated-sources
annotations
rocketmq-consumer.iml 293B
rocketmq-producer
rocketmq-producer.iml 293B
pom.xml 2KB
src
test
java
main
resources
application.yml 658B
java
com
xiaoge
mq
OrderTransactionMessageListener.java 2KB
mapper
OrderInfoMapper.xml 480B
OrderInfoMapper.java 323B
ProducerApp.java 441B
web
OrderInfoController.java 582B
service
IOrderInfoService.java 265B
impl
OrderInfoServiceImpl.java 2KB
domain
OrderInfo.java 2KB
OperateIntergralVo.java 362B
target
classes
cn
wolfcode
mq
OrderTransactionMessageListener.class 3KB
mapper
OrderInfoMapper.xml 482B
OrderInfoMapper.class 432B
web
OrderInfoController.class 926B
service
IOrderInfoService.class 376B
impl
OrderInfoServiceImpl.class 4KB
ProducerApp.class 804B
domain
OrderInfo.class 5KB
OperateIntergralVo.class 813B
application.yml 658B
com
xiaoge
mq
OrderTransactionMessageListener.class 3KB
mapper
OrderInfoMapper.xml 480B
OrderInfoMapper.class 430B
web
OrderInfoController.class 922B
service
IOrderInfoService.class 374B
impl
OrderInfoServiceImpl.class 4KB
ProducerApp.class 801B
domain
OrderInfo.class 5KB
OperateIntergralVo.class 811B
generated-sources
annotations
数据库脚本
mq-consumer.sql 1023B
mq-producer.sql 2KB
共 66 条
- 1
资源评论
只因为你而温柔
- 粉丝: 1w+
- 资源: 39
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 信呼OA系统2.1.7版源码
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功