2016-09-26 44 views
0

我试图使用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

不,不是没有覆盖的一些方法在Laravel的工作调度员内部。 Laravel的队列系统仅设计用于Laravel,因此,队列中的有效载荷结构就是它所期望的格式。如果你想用另一个框架来使用排队的作业,你有很多选择。

1)忽略工作有效载荷中的FQCN。然而,你会将自己绑定到Laravel工作负载的结构上,如果这种情况发生变化,它可能会破坏你的应用程序。

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

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

+0

谢谢。你知道是否有任何图书馆实现了像#3中所说的更通用的工作调度员吗? – vitorsdcs

相关问题