2017-02-04 8 views
1

コンシューマがキュー(FIFOまたは標準キュー)でリッスンしている場合、プロデューサはキューにメッセージを生成します。このシナリオでAmazon SQSはどのように動作しますか?

  1. Amazon SQSキューは、消費者から確認応答を受け取ると自動的にキューからメッセージを削除しますか?キューがメッセージを削除する代わりに保持し、メッセージが再び配信されないようにする方法/構成がありますか?

  2. プロデューサはキューにメッセージを生成します。ネットワークの問題のためにコンシューマーはオフラインになります。しばらくすると、オンラインに戻ってきます。彼がオンラインになったときにメッセージ を消費者に待ち行列に入れますか?私はキューが消費者からのACKを受け取っていないので、はいと思います。

答えて

1

私はあなたがrabbitmqの観点から質問していると信じています。いくつかの違いがあります。 1平方キロメートルはありません。メッセージは自動的に削除されず、消費者がそれを受け入れた後もキューに残ります。メッセージは、消費者がそれを処理した後に明示的に削除する必要があります。

Sqsは、消費者のオンラインオフライン状態について気にしません。消費者は定期的にsqsに新しいアイテムを投票する。メッセージが利用可能であれば、それが配布されます。コンシューマが完了すると、sqsを呼び出してそのメッセージを削除します。次に、新しいメッセージを再度ポーリングします。

お客様のシナリオでは、メッセージの処理が完了すると、2つの要求を行うことができます.1つは異なるキューにメッセージをエンキューし、もう1つは元のキューからメッセージを削除します。

同じキューにリスンする複数のコンシューマがある場合は、メッセージ非表示期間という概念が再生されます。あなたはそのような設定をしている場合は、コメントで尋ねてくださいと私は詳細で更新されます。

希望します。

+0

あなたは「消費者が定期的にSQSに新しいアイテムを投票します」消費者が待ち行列で聞くことができる方法はありますか?非常にスケーラブルなアプリケーションでは、プルモデルは機能しません。 – user3198603

+1

@ user3198603このコメントと元の質問の間には、実際にはドキュメントを実際に読んだようには聞こえません。 [SQS FAQ](https://aws.amazon.com/sqs/faqs/)で説明されているように、メッセージは長いポーリングのHTTP/S接続を介して消費者にプッシュされます。 –

+0

@ user3198603、スケーラビリティが適切な基盤なしで引き込みに苦しむという考えは間違っています。それは、多くの労働者が非常に短い期間に1台のサーバーにヒットした場合にのみ苦しんでいます。 sqsを使用すると、2つの要因がこのように排除されます(1)単一のサーバーではなく複数のサーバーが存在するヒットが配信されます(2)あなたは高い頻度でヒットしません。ロングポール機構により周波数が低下する。 – inquisitive

関連する問題