0

我们正在开发一个应用程序。需要处理大型电子邮件队列。我们计划将电子邮件存储在 SQS 队列中并使用 SES 发送电子邮件。但对如何实际处理队列和进程队列有点困惑。我应该使用 cronjob 定期读取 SQS 队列并发送电子邮件吗?实际触发将从我们的应用程序通过电子邮件发送的脚本的最佳方式是什么?

4

1 回答 1

2

将 SQS 与 SES 结合使用是处理此问题的好方法。如果在发送电子邮件时出现问题,请求仍将在队列中,并将在下次处理。

我只是使用一个 cron 作业来启动我的队列处理/电子邮件发送作业,每小时一次。该作业作为一个简单的循环运行一个小时:

while i've been running < 1 hour:
    if there's a message in the queue:
        process the message
        delete the message from the queue

我将WaitTimeSeconds参数设置为最大值(20 秒),以便在必要时检查新消息将等待一段时间以等待新消息,这样作业就不会每隔几毫秒就访问 AWS。否则,我可以sleep在循环中加入某种声明。

我只运行了一个小时的原因是该作业可能会遇到一些导致它被杀死的错误,或者有内存泄漏,或者其他一些意想不到的问题。这样,任何排队的电子邮件请求仍将在下次启动作业时得到处理。

如果需要,您可以每 15 分钟启动一次作业,这样您将始终有四个工作进程处理队列请求。如果其中一个因某种原因死亡,您仍将与其他三个一起处理。

于 2013-06-16T12:54:10.093 回答