Laravel SQS Worker 挂起

Laravel SQS Worker hangs

我是 运行 一名处理 sqs-fifo 队列的工作人员,它在作业之间挂起(查看时间):

[2019-06-05 14:28:10] Processing: App\Jobs\MyApp\MyJob
[2019-06-05 14:28:10] Processed:  App\Jobs\MyApp\MyJob
[2019-06-05 14:28:23] Processing: App\Jobs\MyApp\MyJob
[2019-06-05 14:28:23] Processed:  App\Jobs\MyApp\MyJob
[2019-06-05 14:28:34] Processing: App\Jobs\MyApp\MyJob
[2019-06-05 14:28:34] Processed:  App\Jobs\MyApp\MyJob
[2019-06-05 14:28:34] Processing: App\Jobs\MyApp\MyJob
[2019-06-05 14:28:35] Processed:  App\Jobs\MyApp\MyJob
[2019-06-05 14:28:38] Processing: App\Jobs\MyApp\MyJob
[2019-06-05 14:28:38] Processed:  App\Jobs\MyApp\MyJob

我正在使用 laravel-sqs-fifo-queue 驱动程序知道是什么原因造成的吗?

据我所知,没有什么能保证在处理完一个作业后,下一个作业会立即开始而不会延迟。 由于您的队列驱动程序是 sqs,您的队列侦听器需要通过互联网查询 Amazon 以获取执行下一个作业所需的信息(下一个作业 + 序列化数据),您至少从那一刻起就会有网络延迟侦听器完成一项工作,并在它获得处理下一项工作所需的信息的那一刻。 在不会有问题的多个侦听器场景中,您可以假设同一侦听器处理的作业之间有一点延迟,因为其他侦听器会同时处理其他排队的作业,但恐怕如果您需要顺序处理对于那些排队的作业,至少延迟是不可避免的。

SQS 还可以使用轮询,这意味着每 X 片时间允许工作人员向 SQS 询问下一个排队的作业以处理(如果可用),因此您仍然固定在这些离散的时间量上。

我还看到 on the documentation 每个队列参数可以设置 DelaySeconds,因为我看到你的延迟似乎比前面提到的要大得多,我也会检查这个参数在我的配置上。