

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SQS の FIFO キューの高スループット
<a name="high-throughput-fifo"></a>

Amazon SQS の高スループットの FIFO キューは、厳格なメッセージ順序を維持しながら、高いメッセージスループットを効率的に管理することで、多数のメッセージを処理するアプリケーションの信頼性とスケーラビリティを確保します。このソリューションは、高スループットおよび順序付けられたメッセージ配信の両方を必要とするシナリオに最適です。

Amazon SQS の高スループットの FIFO キューは、厳密なメッセージの順序付けが重要ではなく、受信メッセージのボリュームが比較的低いか散発的である場合には必要ありません。例えば、低頻度または非連続のメッセージを処理する小規模なアプリケーションの場合、高スループットの FIFO キューに伴う複雑さやコストの増加は割に合わない場合があります。さらに、高スループットの FIFO キューが提供する拡張スループット機能を必要としないアプリケーションでは、Amazon SQS の標準キューを選択する方が、コスト効率が高まり、管理が容易になる場合があります。

高スループットの FIFO キューのリクエストキャパシティを強化するには、メッセージグループの数を増やすことをお勧めします。高スループットのメッセージクォータの詳細については、「Amazon Web Services 全般のリファレンス**」の「[Amazon SQS Service Quotas](https://docs.aws.amazon.com/general/latest/gr/sqs-service.html#limits_sqs.html)」を参照してください。

キューごとのクォータとデータ分散戦略については、「[Amazon SQS のメッセージキュー](quotas-messages.md)」および「[SQS FIFOキューの高スループットを実現するパーティションとデータ分散](#partitions-and-data-distribution)」を参照してください。

## Amazon SQS FIFO キューの高スループットのユースケース
<a name="high-throughput-fifo-use-cases"></a>

以下のユースケースでは、高スループットの FIFO キューのさまざまな用途に注目し、さまざまな業界やシナリオにわたる有効性を示します。

1. **リアルタイムのデータ処理: **イベント処理やテレメトリデータインジェストなど、リアルタイムのデータストリームを扱うアプリケーションは、高スループットの FIFO キューを利用することで、メッセージの継続的な流入を処理しながら、メッセージの順序を維持し、正確な分析を行うことができます。

1. **e コマースの注文処理:** 顧客取引の順序を維持することが重要な e コマースプラットフォームでは、高スループットの FIFO キューにより、ショッピングのピークシーズンでも注文を遅滞なく順番に処理できます。

1. **金融サービス:** 高頻度の取引データやトランザクションデータを処理する金融機関は、高スループットの FIFO キューに依存することで、メッセージの順序付けに関する厳格な規制要件を遵守しながら、レイテンシーを最小限に抑えて市場データやトランザクションを処理できます。

1. **メディアストリーミング: **ストリーミングプラットフォームやメディア配信サービスは、高スループットの FIFO キューを使用してメディアファイルとストリーミングコンテンツの配信を管理し、コンテンツ配信の正しい順序を維持しながら、ユーザーにスムーズな再生エクスペリエンスをもたらすことができます。

## SQS FIFOキューの高スループットを実現するパーティションとデータ分散
<a name="partitions-and-data-distribution"></a>

Amazon SQSは、FIFOキューデータをパーティションに保存します。*パーティション*は、 AWS リージョン内の複数のアベイラビリティーゾーンに自動的にレプリケートされるキューのストレージの割り当てです。パーティションは管理しません。代わりに Amazon SQSがパーティション管理を処理します。

FIFOキューの場合、Amazon SQSは次の状況でキューのパーティションの数を変更します。
+ 現在のリクエストレートが既存のパーティションがサポートできる値に近づいたり超えたりすると、キューがリージョナルクォータに達するまで追加のパーティションが割り当てられます。クオータの詳細については、\$1[Amazon SQS のメッセージキュー](quotas-messages.md)\$1を参照してください。
+ 現在のパーティションの使用率が低い場合は、パーティションの数が減ることがあります。

パーティション管理は自動的にバックグラウンドで自動的に発生し、アプリケーションに対して透過的です。キューとメッセージは常に利用可能です。

### メッセージグループ ID によるデータの配布
<a name="data-distribution-message-group-id"></a>

FIFOキューにメッセージを追加するには、Amazon SQSは各メッセージのメッセージグループ ID の値を内部ハッシュ関数への入力として使用します。ハッシュ関数からの出力値によって、どのパーティションにメッセージが保存されるが決まります。

次の図は、複数のパーティションにまたがるキューを示しています。キューのメッセージグループ IDは、アイテム番号に基づきます。Amazon SQSは、ハッシュ関数を使用して、新しい項目の保存場所を決定します。この場合は、文字列のハッシュ値に基づいています`item0`。アイテムは、キューに追加される順序と同じ順序で格納されることに注意してください。各アイテムの場所は、メッセージグループIDのハッシュ値によって決まります。

![\[キューは複数のパーティションにまたがっています。\]](http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/fifo-documentation-single.png)


**注記**  
Amazon SQS は、パーティションの数に関係なく、FIFO キューのパーティション間で項目を均一に分散するように最適化されています。 では、多数の個別の値を持つメッセージグループ IDs を使用する AWS ことをお勧めします。

### パーティション使用率の最適化
<a name="data-distribution-partition-limitations"></a>

サポートされているリージョンにおいては、各パーティションは、バッチ処理により 1 秒あたり最大 3,000 件のメッセージ、または送信、受信、削除操作では 1 秒あたり最大 300 件のメッセージをサポートします。高スループットのメッセージクォータの詳細については、「Amazon Web Services 全般のリファレンス**」の「[Amazon SQS Service Quotas](https://docs.aws.amazon.com/general/latest/gr/sqs-service.html#limits_sqs.html)」を参照してください。

バッチAPI を使用する場合、各メッセージは[メッセージグループ ID によるデータの配布](#data-distribution-message-group-id)で説明されているプロセスに基づいてルーティングされます。同じパーティションにルーティングされたメッセージは、単一のトランザクションでグループ化され、処理されます。

`SendMessageBatch` API のパーティション使用率を最適化するために、 では、可能であれば同じメッセージグループ IDs を持つメッセージのバッチ処理 AWS を推奨します。

`DeleteMessageBatch` および `ChangeMessageVisibilityBatch` APIs のパーティション使用率を最適化するには、 `MaxNumberOfMessages`パラメータを 10 に設定して`ReceiveMessage`リクエストを使用し、1 つの`ReceiveMessage`リクエストによって返される受信ハンドルをバッチ処理 AWS することをお勧めします。

次の例では、さまざまなメッセージグループ IDを持つメッセージのバッチが送信されます。バッチは3つのグループに分割され、それぞれがパーティションのクォータに対してカウントされます。

![\[異なるメッセージグループ IDを持つメッセージのバッチは、パーティションに保存されます。\]](http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/fifo-documentation-batch.png)


**注記**  
Amazon SQS では、同じメッセージグループ ID の内部ハッシュ関数を持つメッセージがバッチリクエスト内でグループ化されている場合にのみ保証されます。内部ハッシュ関数の出力とパーティションの数に応じて、異なるメッセージグループ IDを持つメッセージがグループ化されることがあります。ハッシュ関数またはパーティションの数はいつでも変更できるため、ある時点でグループ化されたメッセージは後でグループ化されない場合があります。

# Amazon SQS における FIFO キューの高スループットの有効化
<a name="enable-high-throughput-fifo"></a>

新規または既存の FIFO キューに対して高スループットを有効にできます。この機能には、FIFO キューを作成および編集するときに、次の 3つの新しいオプションが追加されます。
+ **高スループット FIFO を有効にする**—現在の FIFOキューのメッセージに対し、より高いスループットを有効にします。
+ **重複除外スコープ**-重複除外をキューレベルまたはメッセージグループレベルのどちらで実行するかを指定します。
+ **FIFO スループット制限**—FIFO キューのメッセージのスループットクォータをキューまたはメッセージグループレベルのどちらで設定するかを指定します。

**FIFO キュー(コンソール)の高スループットを有効にするには**

1. [作成](creating-sqs-standard-queues.md#step-create-standard-queue)を起動またはFIFO キューを[編集](sqs-configure-edit-queue.md)。

1. キューのオプションを指定するときは、**高スループット FIFO を有効にする**。

   FIFOキューの高スループットを有効にすると、関連するオプションは次のように設定されます。
   + **重複除外スコープ**は、FIFOキューの高スループットを使用するために必要な設定の**メッセージグループ** に設定されます。
   + **FIFO スループット制限**は、FIFO キューの高スループットを使用するために必要な設定の**メッセージグループ ID単位** に設定されます。

   FIFO キューの高スループットを使用するために必要な設定のいずれかを変更すると、通常のスループットがキューに対して有効になり、指定どおりに重複除外が実行されます。

1. キューのすべてのオプションをの指定を継続 終了したら、**キューの作成**または**保存**を選択します。

FIFOキューを作成または編集した後、[メッセージの送信](creating-sqs-standard-queues.md#sqs-send-messages)および[メッセージの受信と削除](step-receive-delete-message.md)、全てをより高いTPSで行うことができます。高スループットクォータについては、「[Amazon SQS のメッセージキュー](quotas-messages.md)」の「メッセージスループット」を参照してください。