调用外部rest api幂等性问题

megapentakill 发布于 2017/09/07 09:40
阅读 94
收藏 1

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

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

加载中
0
skhuhu
skhuhu

mq来接受api的订单请求 - 然后再从mq 取出来处理,这样避免并发而产生重复订单·

0
追忆100
追忆100

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

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

返回顶部
顶部