gpt4 book ai didi

node.js - 在不超过速率限制的情况下尽可能快地通过 SES 发送电子邮件

转载 作者:行者123 更新时间:2023-12-05 01:36:47 24 4
gpt4 key购买 nike

我目前正在使用 SendGrid 从许多无服务器 node.js Lambda 函数发送电子邮件,并计划从 SendGrid 转移到 SES(因为价格合理)。

SendGrid 的速率限制如此之高,以至于通过一些 lambda 函数同时使用 for 循环向用户发送电子邮件从来没有造成问题。但是 SES 有较低的速率限制(在我的例子中是每秒 50 封电子邮件),并且会发生超出最大发送速率限制的错误。

如何在不超过速率限制的情况下尽快发送电子邮件?

我目前的计划是通过许多 lambda 函数向 SQS 队列发送电子邮件请求,并接收 SQS 消息以通过 1 个不间断运行的 Lambda 函数发送电子邮件。但是我不确定如何控制向SES发送请求的速度。

最佳答案

我的结论

我决定创建两个 SQS 队列(A 和 B)。队列B用于触发邮件发送功能,队列A用于在等待队列中添加消息。所以我只需要控制将消息从队列 A 移动到 B 的速度,这让一切变得简单。

enter image description here

我考虑了以下几点。

错误处理

起初,我想使用 while 循环通过单个 Lambda 函数发送多封电子邮件,但这使得错误处理变得困难。当发生rate limit exceeded 错误或其他一些意外异常时,需要等待一段时间再重试,但可能会超过Lambda函数的超时时间。

可扩展性

通过单个 Lambda 函数从 SQS 队列接收 50 条消息并在 1 秒内向 SES 发送 50 个请求是可能的,但是如果速率限制上升到 300 或 500,可能无法在一个时间内处理那么多请求第二。将消息从一个 SQS 队列移动到另一个队列,以便为每封电子邮件调用 Lambda 函数,相对容易扩展。

电子邮件优先级

需要立即发送带有验证码的注册确认电子邮件,但可以延迟发送事件电子邮件。使用两个 SQS 队列,我可以控制优先级。

AWS 成本

为每封电子邮件调用 Lambda 函数比在单个 Lambda 函数中发送多封电子邮件需要更多时间,但 AWS 的成本并不是很昂贵。如果向 SES 发送请求需要 1 秒,则使用 128 MB 内存(弗吉尼亚北部地区)执行 Lambda 的成本为 0.000002083 美元。 1000 封电子邮件只需 0.02083 美元,可以忽略不计。

关于node.js - 在不超过速率限制的情况下尽可能快地通过 SES 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61708253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com