2016-04-27 17 views
1

一般的な並行性の問題を避けるために、私は1つのrabbitMQキューから複数のメッセージを消費するシングルスレッドPHPコンシューマを使用しています。PHP RabbitMQコンシューマ:プリフェッチ1

基本的に同じPHPスクリプトがX回実行され、新しいメッセージを待っています。

私の質問は:
私の消費者は、シングルスレッドあるとして、私は1つのメッセージのプリフェッチ構成を設定することを想定して、正しいですか?

PHP Prefetch Count RabbitMQ

ので、明らかにそれ文句を言わないプロセスより
正しい時に1件のメッセージ...よりも?

答えて

2

プリフェッチは、ブローカがコンシューマ側に投入するメッセージの数であり、これらのメッセージが確認応答された後にのみ削除されます。今、クライアント(消費者)がその時点で1つのメッセージを処理していると仮定すると、この番号prefetch_countはあまり重要ではありません。しかし、クライアントがのメッセージを1つのスレッドでメッセージを消費し、新しいスレッドを作成すると、それぞれが1つのメッセージを処理する場合は、明らかに異なるストーリーになります。だから、マルチスレッドの承認はもっとストーリーだと言えるだろう。
あなたはシングルスレッドコンシューマを書きました私は、クライアント全体がシングルスレッドであることを確信していますので、私の直接の回答は1に設定できますが、それは、あなたがメッセージを肯定応答しているかどうかによります。私はちょうどマルチスレッド処理部分について詳しく説明したいと思っていました。

+0

私はもっと理解しています。現在、クライアントは自分が望むすべてのメッセージを消費することができますが、消費者のシングルスレッドの性質のため、一度に1つしか処理できないため、一度に1つしか処理できません。 –

+1

正確に。だから私が同僚と話し合っているとき、私たちはいつも "消費する"というのはメッセージをクライアントに転送するだけで、他のものを処理して肯定するということです。 – cantSleepNow

関連する問題