2017-07-03 63 views
1

我會通過承認輕微的睡眠剝奪來做到這一點。Laravel Queue Worker,RabbitMQ和正在運行的作業遠程生成

的設置如下:

API端點(服務器A)接收呼入,並將此與RabbitMQ的服務器(服務器B)上的特定隊列中。

RabbitMQ(服務器B)只是一個RabbitMQ隊列服務器。沒有更多,沒有更多。

Laravel安裝(服務器C)是我們的實際Laravel安裝,它是爲了在特定隊列中尋找作業並與他們一起做事。

我們在Laravel安裝中有一個RabbitMQ包,它允許在RabbitMQ連接上使用常規的Laravel隊列機制。

我遇到的問題是我們可以產生一個隊列的工作人員 - 但由於我們沒有生成傳遞$job類的作業(作業內容本身通常是JSON數組),因此Laravel安裝不知道如何處理這項工作。

所以我的問題主要圍繞如何處理這種情況。我在考慮在Laravel中使用隊列功能不會做我需要的功能。你能看到我失蹤的方法嗎?我真的需要在非框架腳本上產生一個守護進程來處理這個問題嗎?

您的建議非常感謝!

+0

難道你沒有辦法查看json數組,並理解工作是什麼,或者可以在laravel中準備做什麼? –

+0

@FarrukhSubhani問題在於Laravel中的隊列工作者基於指定的$ job(腳本)運行作業,這與我需要此功能的方式相反,因爲$ job無法從服務器獲得首先創造工作。 – CmdrSharp

+1

進一步思考這個問題,也許最好的選擇是讓服務器A也運行一個更簡單的Laravel安裝和一份相同的工作。然後它可以發送該作業,並且由於運行它的服務器上存在相同的副本,它應該可以運行。不是那個想法的粉絲,雖然它會讓我的設計過於複雜 - 所以如果任何人有更好的主意,我都是耳朵! – CmdrSharp

回答

1

解決方案確實是將作業代碼複製到發佈作業的代碼上。代碼不需要工作實際需要的每個依賴項,因爲它只是將推送它的那個工作序列化。