我必须在ZF2应用程序的10点钟发送大量带有动态内容的html电子邮件通知。邮件的内容此时即时生成。我想使用SlmQueue模块作为作业队列系统,但我真的不知道如何处理它。
感谢您的帮助!
答案 0 :(得分:0)
我会考虑实施两种类型的工作:
GenerateEmailJob - 此作业的有效负载包含成功生成电子邮件正文所需的任何参数(至少)。根据邮件库的功能,您可能希望生成整个邮件(包括标题等)。作业本身生成邮件内容并将其存储在某处(磁盘,redis,RDBMS中的表等)。存储邮件内容后,它会创建一个SendEmailJob,并将其粘贴到另一个队列中。
SendEmailJob - 此作业的有效负载包含实际发送电子邮件所需的任何信息,包括对GenerateEmailJob生成的内容的一些引用。
使用这两种作业类型和两个队列,您可以调整每个类型的工作者数量,以最大化您的吞吐量。
我不建议将电子邮件内容本身存储在SendEmailJob有效负载中。保持工作负载尽可能轻,这是一个很好的一般规则。存储文件名,redis密钥或其他适当的标识符几乎总是更好,而不是存储内容。
此外,我对SlmQueue有一些经验,我建议你考虑不做。支持的队列后端是不同的,你不会从抽象中获得太多。你可能最好直接与beanstalk交谈,或用redis等滚动自己的队列。