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

时间:2017-04-19 19:11:14

标签: php laravel queue amazon-sqs

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

然而,每当我使用"查看消息"时,我都会遇到问题。 SQS Web控制台中的功能。以下是重现的步骤:

  • 进入SQS Web控制台
  • 选择队列
  • 运行"查看消息"获取
  • 中的消息的实时视图
  • 过了一会儿,停止投票
  • 现已发布截获的消息
  • 队列工作人员抓取邮件,但最终都是失败的工作
  • 运行工匠队列:重试所有
  • 现在失败的工作成功运行

为什么会这样?我在PHP 5.6上运行Laravel 5.2.41。

1 个答案:

答案 0 :(得分:0)

我弄清楚发生了什么:

  • 当消息被截获时#34;要在实时视图中显示,它们将被排除在队列之外。
  • 关闭实时视图时,会将消息重新添加到队列中。然后根据消息的接收次数更新消息元数据。
  • 由于我的队列工作程序设置为仅重试一次,此时消息已超过重试次数(即收到的次数),并将作业标记为失败。

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

php artisan queue:work redis --tries=3