Laravel是否可以在有效载荷中没有“作业”属性的情况下执行作业?

时间:2016-09-26 18:27:08

标签: php laravel

我正在尝试使用RabbitMQ队列驱动程序使用Laravel从外部服务中使用作业。

每个作业有效负载基本上都是一个序列化对象。

然而,在我看来,Laravel要求工作有一个名为“job”的属性,该属性映射到一个完全限定的类名(FQCN)。但我不能这样做,因为这些工作是在一个甚至不知道我的Laravel应用程序的服务上创建的。

我可以在没有这个属性的情况下消费和执行工作吗?

示例:

Laravel是否可以执行包含此有效负载的作业:

{
    "fooBar": "abc-123",
    "baz": false,
    "bazBar": 1
}

而不是:

{
    "job": "Acme\\\\Jobs\\\\FooJob",
    "data": {
        "fooBar": "abc-123",
        "baz": false,
        "bazBar": 1
    }
}

1 个答案:

答案 0 :(得分:1)

不,不是没有覆盖Laravel的工作调度员的一些方法。 Laravel的队列系统仅用于与Laravel一起使用,因此队列中有效负载的结构是它所期望的格式。如果您想使用其他框架使用排队作业,则可以使用多种选项。

1)忽略作业有效负载中的FQCN。但是,您将自己与Laravel的工作负载结构联系起来,如果这种情况发生变化,它可能会破坏您的应用程序。

2)覆盖Laravel的作业调度程序,将其传递的数据结构更改为队列。这似乎比它的价值更麻烦。

3)编写自己的作业调度程序,并使用您自己的类与队列系统进行交互。这使您可以完全控制如何使用队列。