1

如何实现 RateLimit 以通过 play.mvc.Mailer 发送电子邮件?

我正在为我的游戏框架 1.2.5 应用程序实现 SES 以替换 GMAIL。该应用程序遇到了一次可能发送 200 封电子邮件(通知)的情况,因此我需要将它们的速率限制为 5 个收件人/秒。亚马逊推荐 Google Guava 的 RateLimit 类 ( http://sesblog.amazon.com/post/TxKR75VKOYDS60/How-to-handle-a-quot-Throttling-Maximum-sending-rate-exceeded-quot-error )。我目前正在扩展 Play 的 Mailer 类。如果我尝试调用自己的发送方法,例如 sendWithRateLimit(Object...args),我会丢失使用 play 的 LocalvariablesNamesEnhancer 类获取的上下文,因此它不知道要调用哪个模板。

任何帮助是极大的赞赏。

4

2 回答 2

1

现在为时已晚,但这样做的方法是:

  1. 创建一个代表您的电子邮件的模型,让我们调用它Email,将它们保存到数据库
  2. 创建一个获取下 XEmail条记录的作业,并计划以允许的速率运行
  3. 对于每条Email记录,使用邮件程序发送电子邮件
于 2013-04-13T12:28:51.097 回答
0

我沿着这条路走了大约 6 个小时,并意识到为了利用 SES,我编写了太多代码。我们将使用 Mandrill 的 Heroku 插件:https ://addons.heroku.com/mandrill

于 2013-04-11T22:19:25.210 回答