2
回答
调用外部rest api幂等性问题
极速云服务器,低至1.04元/天>>>   

要调用外部类似生成订单的api。

让我用消息队列来实现幂等,不重复产生订单,没想好怎么实现,求大神指点

举报
megapentakill
发帖于2个月前 2回/47阅

估计不只要求幂等吧,应该还要数据的最终一致性;提供个思路,也是大部分分布式中的处理思路:

    • 在业务库中增加消息库,存放消息id、消息参数、状态
    • 每个单个业务操作与发消息放在同一本地事务里;发消息时消息并不立即发出,而是向消息库插入一条记录,通过在事务成功提交事件中异步将消息发出(这样可以保证消息的发送与业务操作一致性),如果消息发送成功则将消息库中的消息记录删除掉,如果消息发送失败则消息仍然保持在消息库中;
    • 额外增加一台服务,专门负责消息的扫描重新发送
    • 如果重新很多次一直失败,则需要报警,人工干预;可以根据异常判断出是否需要重试

顶部