2016-09-26 15 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

相關問題