Laravel Larvel多台服务器使用AWS队列

Laravel Larvel多台服务器使用AWS队列,laravel,amazon-web-services,amazon-sqs,Laravel,Amazon Web Services,Amazon Sqs,我在两台服务器上运行了laravel应用程序(使用负载平衡器),我想知道如果我将作业放入AWS SQS队列,并且两台服务器都订阅了队列,会发生什么情况 该作业有可能被处理多次吗 是否有任何方法可以进行设置,以便将作业放入队列的同一台服务器处理该作业(请考虑文件首先存储在磁盘中的文件上载位置) 对于此类设置的任何经验/提示/建议,我们将不胜感激 是否有任何方法可以设置这些内容,使放置作业的同一服务器 在队列中处理作业(认为文件上传在文件所在的位置) 首先存储在磁盘中) 只需将每个服务器配置为使

我在两台服务器上运行了laravel应用程序(使用负载平衡器),我想知道如果我将作业放入AWS SQS队列,并且两台服务器都订阅了队列,会发生什么情况

  • 该作业有可能被处理多次吗
  • 是否有任何方法可以进行设置,以便将作业放入队列的同一台服务器处理该作业(请考虑文件首先存储在磁盘中的文件上载位置)
对于此类设置的任何经验/提示/建议,我们将不胜感激

是否有任何方法可以设置这些内容,使放置作业的同一服务器 在队列中处理作业(认为文件上传在文件所在的位置) 首先存储在磁盘中)

只需将每个服务器配置为使用自己的SQS队列,而不是共享同一个队列。这样,您就可以100%地知道推送作业的服务器就是将处理作业的服务器

您可以通过每台服务器上的
.env
配置文件执行此操作

该作业有可能被处理多次吗

是的,SQS仅保证至少一次交付。您应该构建应用程序,以允许传递消息的多个副本

通常,解决这个问题的方法是使用一个可以锁定消息唯一标识符的服务。这样可以限制关键部分

是否有任何方法可以进行设置,以便将作业放入队列的同一台服务器处理该作业(请考虑文件首先存储在磁盘中的文件上载位置)

正如Laurence所建议的,每个实例都可以有单独的队列