再遇幂等性

       用户确认收货, 逻辑涉及到如下步骤:

func confirm_order() {
	err := update_system1()
	if err != nil {
		return
	}

	err = update_system2()
	if err != nil {
		return
	}

	call_other_system()
}

        实际发现, update_system1调用成功, 但update_system2调用失败, 整个过程是失败的。 

        于是, 在用户看来, 整个确认收货的过程就失败了。 当用户第二次再点击确认收货的按钮时, system1直接报错,导致用户一直没法确认收货。

       这里实际上涉及到幂等性问题, system1需要考虑幂等性, 第二次调用时需要返回already done,  然后confirm_order需要处理这个already done的信息。 收到already done的返回值时, 要认为是正常的, 仍然要让程序继续去调用update_system2

       幂等性接口很重要, 我在之前的博文中也聊过。简单, 但需要注意。

       不多说。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值