答えて

2

キューをポーリングする必要があります。プル・キューの典型的な使用例は、それぞれが一度に1000のタスクを取得する複数のバックエンドを持つことです。

一度に何時間もキュー内にタスクが存在しない場合は、プッシュキューが適しています。

+0

しかし、プッシュキューは、タスク到着率が高い場合にはひどいことがあります。だから、私はこれをデザインの真実とは見なさないでしょう。むしろ、それは現在の解決策の不十分さのように思われる。 (upvotedと受け入れ、プルキューだけがポーリングできることを確認してくれてありがとう) – necromancer

1

あなたの質問は100%確実ではありませんが、回答をお考えください。 cronによって開始されたプルタスクキューを持つことができます。バックエンドを実行するコストを節約します。私は、クライアント側のログデータをシリアル化して保存する必要があります。オンラインハンドラは、単にクライアントデータをタスクプルキューに渡します。 Cronは1分ごとにタスクを起動し、最大10k個のログ項目がシリアル化され、実行ごとに格納されます。 (あなたの負荷に応じて設定を変更してください - これらは私の控えめなニーズを満たすもの以上です。)この場合、キューはバッファとして機能し、ロードスパイクは処理単位全体に広がります。明らかにTQデータにすばやくアクセスしたい場合や予測できない負荷がある場合は便利ではありません。非常に重要なことに、ログデータのシリアライゼーションは、データ書き込みを1,000分の1に削減します。あなたの質問には当てはまらないかもしれないので、大きなHTHで終わります。 -stevep

+0

私はそれが誰かを助けると確信しているので、私はupvotingです。私の質問では、私はブロックすることができるかどうかを知る必要がありました。ブロッキングは大いに役立ちますが、許可されていないようです。可能であれば、ブロッキング(オプションのタイムアウトを使用)は考えられるあらゆる方法でポーリングよりも優れています。 – necromancer

関連する問題