npm 包 @aws-sdk/middleware-retry 使用教程

阅读时长 5 分钟读完

前言

在开发前端应用程序时,可能会频繁地与后端服务进行交互,其中必不可少的就是调用 AWS 服务。然而,由于网络问题等原因,API 调用时可能会出现失败,这时候就需要对 AWS SDK 进行重试。而 @aws-sdk/middleware-retry 这个 npm 包,可以帮助我们轻松地实现 AWS SDK 的重试机制。

安装

首先,我们需要安装包:

然后,在代码中引入:

现在,我们已经可以使用 retryMiddleware 对 AWS SDK 进行重试。

配置

@aws-sdk/middleware-retry 提供了几种配置方式:

maxRetries

maxRetries 可以指定请求失败时最大的重试次数,默认值为 3。

retryDecider

retryDecider 是一个函数,根据返回值决定是否进行重试。参数 retryDecider 支持两种传参方式:

  1. 固定值
  1. 自定义函数
-- -------------------- ---- -------
----- ------ - --- ----------
  ------- ------------
  ----------- -
    -----------------
      ------------- ----- -- -
        -- --------------- --- ---- -
          ------ ----- -- -- --- -----
        -
        ------ ------
      --
    ---
  --
---

retryDelayOptions

retryDelayOptions 配置项决定了每次重试的时间间隔。

-- -------------------- ---- -------
----- ------ - --- ----------
  ------- ------------
  ----------- -
    -----------------
      ------------------ -
        ----- ----- -- ----
        -------------- ------------ -- ---------- - ----- -- -------
      --
    ---
  --
---

示例

这里提供一个完整的示例:

-- -------------------- ---- -------
----- - --------- ---------------- - - ------------------------------
----- - --------------- - - -------------------------------------

----- ------ - --- ----------
  ------- ------------
  ----------- -
    -----------------
      ----------- --
      ------------- ----- -- -
        -- --------------- --- ---- -
          ------ -----
        -
        ------ ------
      --
      ------------------ -
        ----- -----
        -------------- ------------ -- ---------- - -----
      --
    ---
  --
---

----- ------- - --- ------------------
  ------- -----------------
  ---- -----------------
---

--- -
  ----- -------- - ----- ---------------------
  ----------------------
- ----- ----- -
  -------------------
-

结语

@aws-sdk/middleware-retry 这个 npm 包可以帮助我们快速地实现 AWS SDK 的重试机制。通过合理的配置,可以让应用程序保持高可用性、稳定性。希望这篇文章对你有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f6f23e8a9b7065299ccba4d

纠错
反馈