[英]Undesired parallel execution of Laravel IronMq Queues
我正在嘗試使用Laravel設置IronMq隊列,我已經將它工作了,但關鍵是行為不是所需的行為。
我希望IronMq等到作業完成($ job-> delete())來推送一個新的,但我發現它在前一個完成之前推送了消息。
代碼結構如下:
Route::post('queue/send' ,function()
{
...
Queue::push(function($job) use ($data)
{
...
$job->delete();
}
return true;
}
有沒有人找到防止並行行為並使其順序的方法?
非常感謝你!
推送隊列自然會繼續推送消息,無論作業是否完成,因為它們是2個獨立系統。 其次,利用推送隊列的目的是使其盡可能實時。
IronMQ專門進行了重試 ,聽起來,它會按指定的時間間隔(您設置)重試將消息推送到所需的端點X次(您設置) - 希望這有助於解決您的問題。
如果您希望只在前一個作業完成后處理作業,並且可以接受稍微延遲,那么我建議輪詢隊列並批量檢索。
您也可以嘗試使用IronMQ類而不是laravel Queue類:
$ironmq = new \IronMQ(array(
'token' => Config::get('queue.connections.iron.token', 'xxx'),
'project_id' => Config::get('queue.connections.iron.project', 'xxx')
));
$ironmq->postMessage($queue_name, "Hello world");
謝謝你的回答,我決定使用Beanstalkd而不是IronMQ。
它更加混亂,但它提供了所需的功能,我不依賴於任何人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.