SQS重复消息处理

时间:2016-05-31 10:37:20

标签: laravel amazon-sqs

我正在使用Amazons SQS和一个处理作业的单独机器(工作人员)运行队列进程。我也使用supervisor来确保queue:listen始终在工作计算机上运行,​​但是当我定义numprocs=8时(就像laravel网站上的示例一样)工作正在执行一次因此电子邮件被发送了几次等'。

任何想法即使我正在运行多个工作进程和计算机,如何才能确保作业只执行一次?

1 个答案:

答案 0 :(得分:0)

使用SQS,一旦工人拿走物品 - 工人有责任立即从SQS中删除该物品,以便其他工人也不会获得物品。

本部分文档说明了删除项目所允许的时间 - http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html

由于您没有显示发送Laravel工作人员的电子邮件代码,我只能猜测您没有立即删除SQS项目 - 而是可能只在发送电子邮件后删除它。如果电子邮件发送部分超过SQS可见性超时(在链接文档中描述),那么其他工作人员可以选择同样的任务。