簡體   English   中英

不希望的Laravel IronMq隊列並行執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM