2017-01-13 2 views
0

私は一意の値を持っています。PHPプロセス間で一意にキューを配布する最適な方法

各値は1回のみ配信することができます。順序は重要ではありません。 私はこれを行うには良いツールを探しています。

私はSELECT .. LIMIT 1 FOR UPDATEでMySQLを使用することを考えていました。 Works、リリースの最初のロックを待つのではなく、ロックされていない行を選択する方法はありますか?

私はrabbitmqを使用しようとしましたが、1つのメッセージを消費する消費者として各リクエストを登録しましたが、この方法は遅いです。 WAN経由で約1秒かかる

+0

これは大変です。通常、RMQは非常に高速です。たぶんメッセージサイズが大きすぎますか? – cantSleepNow

+0

メッセージサイズはわずか2バイトです。 RMQは高速ですが、接続するとかなり遅れているようです(高いWAN待ち時間)。しかし、ローカルネットワーク上でさえ、メッセージを取得するのに0.05秒以上かかる。 –

+0

それは変です。以前にテストを実行したとき、私は5〜6k msgs/sを処理していましたが、10〜50KBでした。 – cantSleepNow

答えて

1

コメント

から[RMQへ]

を接続する際にかなりの遅延があるようです、はい、間違いなくあります!場合によっては、接続が5秒から10秒かかります。

しかし、私たちがRabbitMQを管理する方法は、アプリケーションインスタンスごとに1つのオープンな接続を持つことです。アプリケーションインスタンスが起動するとそれを開き、永遠に開いたままにします。

私たちが仕事をする必要があるときは、仕事をするためのチャンネルを作ります。

チャンネルは、接続とは異なり、安価で非常に高速で開閉できます。

+0

良いアイデア!現在私が使用しているphp-amqplibはこれをサポートしていないようです。この作業をするためにそれを調べます。あなたはRMQを使うのが最良の解決策だと思いますか? –

関連する問題