说明
该组件支持事务的最终一致性,用于解耦式可靠的业务通知。
事物消息执行出错后存在重试机制,在重试达到一定次数时将需要人工干预。
建议业务方做好幂等,防止极端情况下异常问题。
使用
引入依赖
<dependency> |
系统配置中开启定时计划
ab: |
常用属性配置介绍
属性名 | 属性描述 | 默认值 |
---|---|---|
ab.trxm.retry-times | 调用出错重试次数 | 3 |
ab.trxm.threads | 事务消息处理线程数 | cpu * 2 + 1 |
ab.trxm.queues | 事务消息处理线程缓存队列 | 100 |
事务消息状态说明
待处理
表示消息未被处理或处理出错后将继续重试
已死亡
表示消息已不在继续调用重试,出现该消息情况分为以下几种:
- 消息调用出错超过最大处理次数
- 消息未找到处理类
@AbMessage注解
AbMessage在主事务提交后,将异步被调用,保证事务的最终一致性
public class OrderService { |
日志管理
管理功能位于:
系统配置-开发辅助-事物消息队列
系统配置-开发辅助-事物消息日志
常见问题
如何自定义实现接入事务消息
- 实现接口
com.dstz.agilebpm.component.trxm.caller.TrxmCaller
,将实现类加入Spring容器中。 - 实现接口
com.dstz.agilebpm.component.trxm.model.TransactionMessageModel
,其中getCaller
方法为1中加入Spring容器中的Bean Name。 - 使用时调用接口
TransactionMessageService.add
注意
实现
TrxmCaller.call
时,如需要支持事务,需在实现方法上加入事务注解@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)