Laravel 将消息发送回 SQS 时队列工作程序作业失败

Laravel queue worker jobs fail when messages are sent back to SQS

我已经将我的 Laravel 应用程序设置为从 SQS 队列检索消息。在正常操作期间一切正常:当调度可排队作业时,消息被添加到队列中,队列工作人员从 SQS 获取消息并成功 运行s 作业。

但是,每当我在 SQS Web 控制台中使用 "View Messages" 功能时,我 运行 都会遇到问题。以下是重现步骤:

为什么会这样?我 运行宁 Laravel 5.2.41 PHP 5.6.

我知道发生了什么:

  • 当消息 "intercepted" 显示在实时视图中时,它们将从队列中取出。
  • 当您关闭实时视图时,消息会重新添加到队列中。然后,消息元数据会根据收到消息的次数进行更新。
  • 由于我的队列工作器设置为仅重试一次,此时消息已超过重试次数(即收到的次数)并将作业标记为失败。

为了解决这个问题,我向我的队列工作人员添加了额外的重试 "buffer":

php artisan queue:work redis --tries=3