电子邮件消息队列 - X工作者并停止重叠

时间:2011-03-19 17:24:09

标签: php mysql email queue

我的网站上发生了大量的电子邮件,这些邮件是在MySQL表格中加载的。在任何时候都可能有1k-2k等待随时发送。

我一直致力于批量发送电子邮件并通过一名工作人员发送电子邮件。现在我希望在负载增加时将X worker添加到系统中。

我的问题是不允许员工抓住同一封电子邮件。我听说过以下几种选择。

  1. 使用SELECT FOR UPDATE锁定行
  2. 使用时间戳让工人知道已经采取的时间和
  3. 让父母跟踪孩子并委派工作
  4. 我看到每一个中的价值,但也有很多读/写数据库。那你会怎么做?

    通过PHP和MySQL执行此操作

1 个答案:

答案 0 :(得分:2)

另一个快速而肮脏的选项,假设您有一个随机或结构化的主键,让N个工作人员只接收key%N==i i工作者ID的邮件。

当然,您也可以采用其他足够随机的哈希值。没有必要锁定,没有额外的协调,当一个工人死亡而你没有注意到时,这只是一个小问题......