【问题标题】:Laravel 5 how to run commands based on SQS message dataLaravel 5 如何根据 SQS 消息数据运行命令
【发布时间】:2015-08-12 22:13:27
【问题描述】:

我正在尝试在 laravel 中设置基于 sqs 的消息队列。 我设置了我的 queue.php 文件,当我运行 artisan queue:listen 命令时,消息被成功检索。但是,我收到 [ReflectionException] 告诉我我的命令不存在。

存储在 SQS 上用于检索的消息如下所示:

{"job":"HELLOWORLD"}

我已经按照http://laravel.com/docs/5.0/queues 的说明创建了一个同名的 laravel/artisan 命令

php artisan make:command HELLOWORLD --queued    

但是,当我运行命令时

php artisan queue:listen 

从 SQS 检索消息时,我收到以下错误

  [ReflectionException]
  Class HELLOWORLD does not exist

我的问题是我如何让 laravel 识别这个命令,一旦它起作用,我如何让 laravel 查看 SQS 上包含的 JSON 消息中的其他项目。 例如,假设我有另一个名为“message”的索引,其中包含“来自 sqs 的你好”的数据,使我的 json 看起来像

{"job":"HELLOWORLD","message":"Hello from SQS"}

我将如何访问这个其他字段? 提前致谢。 Laravel 中关于队列的文档非常少。

【问题讨论】:

  • 为什么将作业/类名指定为全大写?
  • 因为我不知道自己在做什么。队列部分没有指定作业(或一般的队列消息)应该是什么样子。

标签: laravel queue laravel-5 amazon-sqs laravel-artisan


【解决方案1】:

答案是我这样做完全错了。您需要使用 Laravel 队列文档中所示的 $contoller->dispatch 方法。

如果您这样做,则消息将正确形成,并且您创建的类中的任何变量仍将存在。

【讨论】:

    猜你喜欢
    • 2019-10-20
    • 2021-07-01
    • 1970-01-01
    • 2018-09-13
    • 2015-06-04
    • 2014-08-12
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    相关资源
    最近更新 更多