繁体   English   中英

Laravel使用AWS队列的多个服务器

[英]Laravel multiple servers working with AWS queue

我在两个服务器上运行laravel应用程序(使用负载均衡器),我想知道如果我在AWS SQS队列中放置一个作业并且两个服务器都订阅了队列会发生什么。

  • 是否有可能不止一次处理这份工作?
  • 是否有任何设置方法,以便将作业放入队列的同一台服务器处理作业(想想文件上传文件首先存储在磁盘中)。

任何有这种设置的经验/提示/建议都表示赞赏。

是否有任何设置方法,以便将作业放入队列的同一台服务器处理作业(想想文件上传文件首先存储在磁盘中)。

只需将每个服务器配置为使用自己的SQS队列 - 而不是共享同一个队列。 这样你100%知道推动作业的服务器是处理它的服务器。

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

是否有可能不止一次处理这份工作?

是的,SQS仅保证至少一次交付。 您应该构建应用程序以允许传递多个邮件副本。 http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues.html#standard-queues-at-least-once-delivery

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

是否有任何设置方法,以便将作业放入队列的同一台服务器处理作业(想想文件上传文件首先存储在磁盘中)。

正如Laurence所建议的那样,您可以为每个实例分别设置队列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM