2016-01-08 11 views

答えて

2

私は、フィルタリング操作が完了した後にキューアイテム[エンティティ]を処理する必要があると仮定しています。複数のキューが確かに役立つかもしれませんが、より堅牢な方法は前処理を実行し、そこには[送信者IDによるフィルタリングのように]私の意見ではエレガントな方法です。

AWS Lambdaのリリースでは、フィルタリングや前処理をオフロードして、適切な場所にプッシュ/置くことができます。

アイテムをキューにプッシュするユーザーがいる場合は、次のような方法で対処してください。

2つのラムダ関数[Feeder &ワーカー]を試すことができます。

フィーダー

ワーカーがにリンクされるだろうその仕事SQSからアイテム を取る(もしあれば)とSNSのトピックとして、それを押して(そして永遠にそれをやって続ける)することであるscheduled lambda functionだろうdata filtering [送信者IDに応じて]を行うSNSトピックを聞いてください。渡されたアイテムは新しいキューに移動し、残りは廃棄することができます。

より良い方法は、エンティティをSNSトピックに直接プッシュし、ラムダ関数が直接フィルタリングを実行できるようにすることです。

7

いいえ、あなたはsenderidでリクエストを受け取ることはできません。すべてのメッセージを読んで、一致しないものを '捨てる'ことが必要ですが、それは最良の方法ではありませんあなたはそのすべての読書要求を払い、たくさんのメッセージを投げ捨てます(つまり、キューに戻す)。おそらく非常に長い時間のために -

「間違った」消費者のすべてがこれをやっている間は、実際に望んでいる消費者は、/彼らは実際に自分のメッセージを取得してからブロックしようとしているに割り当てられたメッセージを必要とします。

あなたの意図はわかりませんが、メッセージを消費する方法であれば、複数のキューを使用する方が良いでしょう(追加のキューを作成するための追加コストはありません)。

関連する問題