前言
在开发前端应用程序时,可能会频繁地与后端服务进行交互,其中必不可少的就是调用 AWS 服务。然而,由于网络问题等原因,API 调用时可能会出现失败,这时候就需要对 AWS SDK 进行重试。而 @aws-sdk/middleware-retry
这个 npm 包,可以帮助我们轻松地实现 AWS SDK 的重试机制。
安装
首先,我们需要安装包:
npm install @aws-sdk/middleware-retry
然后,在代码中引入:
const { S3Client, GetObjectCommand } = require("@aws-sdk/client-s3"); const { retryMiddleware } = require("@aws-sdk/middleware-retry"); const client = new S3Client({ region: "us-west-2", middleware: [retryMiddleware], });
现在,我们已经可以使用 retryMiddleware
对 AWS SDK 进行重试。
配置
@aws-sdk/middleware-retry
提供了几种配置方式:
maxRetries
maxRetries
可以指定请求失败时最大的重试次数,默认值为 3。
const client = new S3Client({ region: "us-west-2", middleware: [retryMiddleware({ maxRetries: 5 })], });
retryDecider
retryDecider
是一个函数,根据返回值决定是否进行重试。参数 retryDecider
支持两种传参方式:
- 固定值
const client = new S3Client({ region: "us-west-2", middleware: [ retryMiddleware({ retryDecider: () => true, // 总是重试 }), ], });
- 自定义函数
-- -------------------- ---- ------- ----- ------ - --- ---------- ------- ------------ ----------- - ----------------- ------------- ----- -- - -- --------------- --- ---- - ------ ----- -- -- --- ----- - ------ ------ -- --- -- ---
retryDelayOptions
retryDelayOptions
配置项决定了每次重试的时间间隔。
-- -------------------- ---- ------- ----- ------ - --- ---------- ------- ------------ ----------- - ----------------- ------------------ - ----- ----- -- ---- -------------- ------------ -- ---------- - ----- -- ------- -- --- -- ---
示例
这里提供一个完整的示例:
-- -------------------- ---- ------- ----- - --------- ---------------- - - ------------------------------ ----- - --------------- - - ------------------------------------- ----- ------ - --- ---------- ------- ------------ ----------- - ----------------- ----------- -- ------------- ----- -- - -- --------------- --- ---- - ------ ----- - ------ ------ -- ------------------ - ----- ----- -------------- ------------ -- ---------- - ----- -- --- -- --- ----- ------- - --- ------------------ ------- ----------------- ---- ----------------- --- --- - ----- -------- - ----- --------------------- ---------------------- - ----- ----- - ------------------- -
结语
@aws-sdk/middleware-retry
这个 npm 包可以帮助我们快速地实现 AWS SDK 的重试机制。通过合理的配置,可以让应用程序保持高可用性、稳定性。希望这篇文章对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f6f23e8a9b7065299ccba4d