Skip to content

幂等功能

功能特性

  1. 用于业务保证相同交易唯一识别号下的交易返回结果一定一致;
  2. 防止补偿交易后发先至;
  3. 记录交易调用基础流水,并标识流程执行状态。

使用说明

  • 参数配置
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:配置服务 uri
    • compensateNoSpel:若配置则开启防止交易后发先至功能,补偿交易可配置(如冲正交易),配置后,流程根据 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";