3

Laravel で IronMq キューを設定しようとしていますが、既に動作していますが、ポイントは動作が望ましいものではないということです。

IronMq はジョブが完了するまで待って ($job->delete()) 新しいジョブをプッシュすることを期待していますが、前のジョブが完了する前にメッセージをプッシュすることがわかりました。

コードは次のように構成されています。

Route::post('queue/send' ,function() 
{
    ...
    Queue::push(function($job) use ($data)
    {
        ...
        $job->delete();
    }
    return true;
}

並列動作を防ぎ、順次にする方法を見つけた人はいますか?

どうもありがとうございました!

4

3 に答える 3

2

プッシュ キューは、2 つの独立したシステムであるため、ジョブが完了したかどうかに関係なく、メッセージをプッシュし続けます。次に、プッシュ キューを利用する目的は、可能な限りリアルタイムにすることです。

IronMQ には特に再試行機能があり、指定された間隔 (設定した間隔) で X 回 (設定した回数) 目的のエンドポイントにメッセージをプッシュすることを再試行します。これが問題の解決に役立つことを願っています。

前のジョブが完了した後にのみジョブを処理することを希望し、わずかな遅延が許容される場合は、キューをポーリングしてバッチで取得することをお勧めします。

于 2014-05-06T17:11:55.893 に答える
0

ご回答ありがとうございます。IronMQ の代わりに Beanstalkd を使用することにしました。

それははるかに厄介ですが、必要な機能を提供し、私は誰にも依存していません.

于 2014-05-20T10:37:18.547 に答える