在timeinterval中收集用户的电子邮件并在发送之前将它们合并(GAE)

时间:2011-03-15 19:20:18

标签: java google-app-engine web-applications

我有一个页面,每当有人打开班次时都会发送电子邮件。然后这些电子邮件会发送给很多人。如果有人在fx五分钟的时间间隔内打开两个班次,则会发送两封电子邮件。该应用程序部署在应用程序引擎上,因此我有兴趣将发送的邮件保持在最低限度。

我想要的是在用户打开第一班后10分钟设置fx的一些计时器,然后在发送任何邮件之前收集用户可能在此时间间隔内打开的任何其他班次。然后我可以将它们全部合并到一封电子邮件中。

你们有没有想过如何在app引擎上做这个?

修改

如果用户只收到一封电子邮件,其中包含所有已打开的班次而非每班一封电子邮件的信息,这样做也会更好吗?我不想垃圾邮件给任何人:)

1 个答案:

答案 0 :(得分:3)

您可以在未来10分钟内使用ETA创建任务队列任务。您可以根据用户的ID +批次ID为此任务命名。批处理ID应与用户一起保存,以便10分钟窗口内的所有更改都获得相同的任务名称(防止队列中出现重复的任务)。

当任务执行时,您会找到具有指定批次ID的所有更改,从用户的模型中删除批次ID,以便他们可以开始新的批处理,构建您的电子邮件并发送它。