Appearance
幂等功能
功能特性
- 用于业务保证相同交易唯一识别号下的交易返回结果一定一致;
- 防止补偿交易后发先至;
- 记录交易调用基础流水,并标识流程执行状态。
使用说明
- 参数配置
yaml
comet:
flow:
anti-repeat:
enable: true
includes:
- sysHead.messageType=1000
- sysHead.messageType=1200
- sysHead.messageType=1300
excludes:
- sysHead.messageType=1400
services:
- serviceId: /abc
compensateNoSpel: body.sourceSeqNo
配置说明
- 配置
enable=true
开启幂等功能 - filter 配置
includes
:配置的是满足条件的报文使用幂等功能excludes
:配置的是满足条件的报文不使用幂等功能
- services 配置单独服务开启幂等功能
serviceId
:配置服务 uricompensateNoSpel
:若配置则开启防止交易后发先至功能,补偿交易可配置(如冲正交易),配置后,流程根据 spel 表达式获取对应的原始交易serviceNo
(交易唯一标识号,由入参报文结构getServiceNo()
决定,一般为seqNo
的映射),并根据不同交易状态进行不同处理
交易状态展示
java
/** 交易成功,对外围返回的交易状态 */
public static final String STATUS_SUCCESS = "S";
/** 交易业务异常状态,对外围返回的交易状态 */
public static final String STATUS_FAILED = "F";
/** 交易授权异常状态,对外围返回的交易状态 */
public static final String STATUS_AUTH = "O";
/** 交易确认异常状态,对外围返回的交易状态 */
public static final String STATUS_CONF = "C";
/** 交易授权&确认异常状态,对外围返回的交易状态 */
public static final String STATUS_AUTH_CONF = "B";
/** 交易执行未知,对外围返回的交易状态 */
public static final String STATUS_UNKNOWN = "U";
/** 交易前次补偿失败,原交易可再次补偿状态,fw_tran_info表交易状态记录 */
public static final String STATUS_TRY_SUCCESS = "T";
/** 交易运行,fw_tran_info表交易状态记录 */
public static final String STATUS_RUN = "R";
/** 交易提前被补偿,fw_tran_info表交易状态记录 */
public static final String STATUS_BEFORE_COMPENSATE = "P";
/** 交易提前被查证,fw_tran_info表交易状态记录 */
public static final String STATUS_BEFORE_VERIFY = "V";
/** 交易以被补偿,fw_tran_info表交易状态记录 */
public static final String STATUS_COMPENSATE = "X";
/** 交易正在被补偿,fw_tran_info表交易状态记录 */
public static final String STATUS_RUN_COMPENSATE = "Q";