我有一个向用户信用卡收费的程序。该卡通过第三方API进行收费。当我从第三方API得到响应时,我会更新用户余额的内部表示。一旦用户的余额被更新,收据就会通过电子邮件发送给用户。
在为用户的卡充电和更新其余额的内部表示之间,可能会发生一些服务器错误(例如,意外断电)的可能性很小。为了防止这种情况,我已经使整个支付过程是幂等的,这样它就可以重试,而不需要向用户收取双重费用,但肯定会更新用户的内部余额。唯一的问题是发送收据。没有办法(我能想到的)使这个操作是幂等的。目前,我只发送余额更新的电子邮件,但当然服务器可能会在余额更新和发送收据之间失败,导致收据永远不会发送的情况。人们通常是如何解决这个问题的?
我将这个问题标记为language-agnostic,因为它似乎是一个发送消息的一般问题,但我正在使用Java和亚马逊网络服务的简单电子邮件服务来解决这个问题,所以使用这些技术获得答案将是非常棒的。
发布于 2016-04-15 14:24:05
当我们之前这样做的时候,我们在对象中使用了一个在发送通知时设置的标志,这样如果为该事务/id设置了标志,循环就不会发送电子邮件
https://stackoverflow.com/questions/36639576
复制相似问题