【发布时间】:2021-03-30 16:07:59
【问题描述】:
我正在开发一个使用来自客户的 SMTP 服务器的电子邮件客户端。我将凭证存储在 AWS RDS 数据库中。客户可以创建邮件营销活动,并且必须在营销活动创建后异步发送电子邮件。
我想配置一个 SQS 队列以使消息可用,每条消息之间有 2 分钟的延迟。目的是将消息发送到能够通过 SMTP 发送消息的 Lambda 函数(使用数据库中的凭证)。由于消息之间的延迟,我可以优化电子邮件的传递。交货顺序并不重要。
不幸的是,我找不到这样做的方法。 SQS 中可用的计时器适用于整个队列,或者必须针对每条消息。就我而言,如果我在 SQS 队列中放入 100 条消息,我需要立即发送第一条,2 分钟后发送第二条,依此类推。
有人对此问题有解决方案吗?如果 SQS 不是满足这一需求的合适服务,AWS 平台上是否还有其他可用的服务?
【问题讨论】:
-
Lambda + SQS 支持批处理:aws.amazon.com/about-aws/whats-new/2020/11/…
-
我不想批处理。相反,我想每 2 分钟从 SQS 拉一条消息
-
您可以通过 cloudwatch 安排一个触发器,该触发器基本上会触发一个 lambda,然后手动从 SQS 接收一条消息。除此之外(并部署您自己的应用程序并自己编写所有逻辑)您真的没有任何选择。
-
Amazon SQS 不会在消息之间设置延迟。您应该将此延迟构建到您的消费者代码中(以便它仅在给定的时间间隔内消费记录)。
标签: amazon-web-services aws-lambda smtp amazon-sqs