幂等策略-尝试插入

系统对外提供的服务应该满足幂等特性,同一次请求多次处理得到的结果应该相同。

介绍一种简单的幂等策略:

1、请求到来时根据幂等关键字构造幂等记录,幂等关键字在数据表中应该满足唯一约束

2、尝试插入幂等记录

3、插入失败时,根据幂等关键字捞取记录,若已存在则将已存在记录的状态返回,若不存在则抛异常出去等待下次请求。

示例代码:

/**

     * try insert idempotent strategy 
     * 
     * @param request service request
     * @return service result
     */
    private Result tryInsertIdempotent(Request request) {

        OrderDO orderDO = Convert.composeOrderDO(request.getRequestId());
        try {
            // 1.try insert to order table,use requestId as idempotent key
            orderDAO.insert(orderDO);

        } catch (DAOException e) {
            // 2.query order table,to identify if order for current request has existed
            BnsUniqueDO bnsUniqueDO = bnsUniqueDAO.load(idempotentNo);

            if (bnsUniqueDO != null) {
                // 3. use existed order to construct service result
                OrderDO orderDO = OrderDAO.load(idempotentNo);

            } else {
                // 4. if there is no order for current request, throw DAOException  
                throw new ServiceException(ErrCodeEnum.DAL_OPERATION_EXCEPTION,
                    "biz unique check insert occurs db exception", e);
            }
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值