0
在我的生产环境中,有7个并行服务器。我用的Redis进行邮件队列这样的:在许多服务器环境中使用redis发送邮件队列
$this->getRedis()->lpush('mailsQueue', serialize($mail));
,那就是听队列守护进程:
do {
$mail = $this->getRedis()->rpop('mailsQueue');
if ($mail) {
// sending an email
}
usleep(1000);
} while (true);
当守护程序只有一个实例运行它工作得很好。但在生产环境中,每台服务器都有自己的守护程序服务。这造成了一个问题,即有时候,电子邮件发送几次。这是因为有时不仅一个守护进程服务会从“mailsQueue”列表中加载相同的电子邮件。
无论我运行多少个守护程序服务,我如何确保只有一次加载带有“rpop”的元素?
非常感谢您的帮助!
在一天结束的时候,Redis的不是为此目的设计的...看看RabbitMQ的或这样的事情... –