SQS 重复消息处理
SQS Duplicate messages handling
我是 运行 使用 Amazons SQS
的队列进程和处理作业的单独机器(工作人员)。我还使用 supervisor
来确保工作机器上的 queue:listen
始终是 运行,但是当我定义 numprocs=8
时(如 laravel 上的示例的网站)作业被执行了不止一次,因此电子邮件被发送了几次等等”。
知道如何确保一个作业只执行一次,即使我是 运行 多个工作进程和机器吗?
使用 SQS,一旦工人拿走了一件物品 - 工人有责任立即从 SQS 中删除该物品,这样其他工人就不会也得到该物品。
文档的这一部分解释了允许您删除项目的时间长度 - http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html
由于您没有显示您的电子邮件发送 Laravel 工作人员的代码,我只能猜测您不会立即删除 SQS 项目 - 而是可能仅在电子邮件后删除它寄了,送了。如果电子邮件发送部分花费的时间超过 SQS 可见性超时(在 link 文档中描述),则其他工作人员接手相同的任务是有意义的。
我是 运行 使用 Amazons SQS
的队列进程和处理作业的单独机器(工作人员)。我还使用 supervisor
来确保工作机器上的 queue:listen
始终是 运行,但是当我定义 numprocs=8
时(如 laravel 上的示例的网站)作业被执行了不止一次,因此电子邮件被发送了几次等等”。
知道如何确保一个作业只执行一次,即使我是 运行 多个工作进程和机器吗?
使用 SQS,一旦工人拿走了一件物品 - 工人有责任立即从 SQS 中删除该物品,这样其他工人就不会也得到该物品。
文档的这一部分解释了允许您删除项目的时间长度 - http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html
由于您没有显示您的电子邮件发送 Laravel 工作人员的代码,我只能猜测您不会立即删除 SQS 项目 - 而是可能仅在电子邮件后删除它寄了,送了。如果电子邮件发送部分花费的时间超过 SQS 可见性超时(在 link 文档中描述),则其他工作人员接手相同的任务是有意义的。