可靠地调用第三方

调用第三方服务可能看起来很简单:只需要发起一个HTTP请求即可!

实际上,如果真这样去做,迟早会出现各种稳定性或者数据不一致的问题,因为:

  • 网络有可能偶尔中断,HTTP调用就会失败。
  • 第三方可能在更新或者重启或者崩溃了,HTTP调用出现失败。

最麻烦的是:这种失败不是简单的 for循环+重试就能解决,因为不知道故障会持续多久!



调用第三方通常有2大场景:

  • 即时调用(同步等待调用):需要立即获取结果,然后继续执行
  • 当前任务执行结束,【通知】第三方做相应处理



解决办法:

  • 第一种场景:建议使用 for循环+重试,或者使用 ClownFish中的 HttpRetry 来解决。
  • 第二种场景:有2种方法

以上2种方法都依赖于 MQ 和 消息管道,差别:

  • 前者:开发简单,但是需要多部署一个服务以及相关配置
  • 后者:灵活度高