你好,我有网店,想在单独的服务器上设置数据库的负载平衡,但是当有新闻邮件发送时会发生什么。我的想法是,这些网络服务器不知道谁发送了什么,可能会多次发送?例如,WEB1 触发发送,然后 WEB2 触发发送相同的邮件。
答案1
您将外发电子邮件作业放入队列,然后让工作进程(可能每台服务器上一个)使用排队的消息并对其采取行动。
工作进程认领队列消息(使其他工作进程无法使用该消息),发送电子邮件,然后在成功完成后确认该消息。如果在一定时间内未确认该消息,则这些消息将重新出现在队列中,以供其他工作进程使用。
RabbitMQ 是一个备受推崇的消息队列系统。Redis、gearman 甚至像 Amazon 的 Simple Queue Service 这样的系统也是其他选择。