ZF2 SlmQueue电子邮件通知队列

时间:2015-05-21 12:10:18

标签: php email zend-framework2 queue

我必须在ZF2应用程序的10点钟发送大量带有动态内容的html电子邮件通知。邮件的内容此时即时生成。我想使用SlmQueue模块作为作业队列系统,但我真的不知道如何处理它。

  • 我是否必须创建多个作业来生成和发送 邮件?
  • 我是否必须将整个电子邮件的html存储在作业中 有效载荷?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我会考虑实施两种类型的工作:

  1. GenerateEmailJob - 此作业的有效负载包含成功生成电子邮件正文所需的任何参数(至少)。根据邮件库的功能,您可能希望生成整个邮件(包括标题等)。作业本身生成邮件内容并将其存储在某处(磁盘,redis,RDBMS中的表等)。存储邮件内容后,它会创建一个SendEmailJob,并将其粘贴到另一个队列中。

  2. SendEmailJob - 此作业的有效负载包含实际发送电子邮件所需的任何信息,包括对GenerateEmailJob生成的内容的一些引用。

  3. 使用这两种作业类型和两个队列,您可以调整每个类型的工作者数量,以最大化您的吞吐量。

    我不建议将电子邮件内容本身存储在SendEmailJob有效负载中。保持工作负载尽可能轻,这是一个很好的一般规则。存储文件名,redis密钥或其他适当的标识符几乎总是更好,而不是存储内容。

    此外,我对SlmQueue有一些经验,我建议你考虑不做。支持的队列后端是不同的,你不会从抽象中获得太多。你可能最好直接与beanstalk交谈,或用redis等滚动自己的队列。