

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

# Amazon SQS フェアキュー
<a name="sqs-fair-queues"></a>

 Amazon SQS フェアキューは、顧客、クライアントアプリケーション、メッセージタイプなど、複数の論理エンティティからのメッセージを含むマルチテナントキューにおいて、ノイジーネイバーの影響を自動的に軽減します。これらの共有キュー環境において、重要なパフォーマンス指標のひとつがドウェル時間です。ドウェル時間は、メッセージがキューに到着してから処理されるまでに費やす合計時間を測定します。あるテナントがシステムが処理できる量を超えてメッセージを発行してキューにバックログを作成した場合でも、フェアキューは他のテナントのドウェル時間への影響を最小限に抑えます。

**定常状態**

 次の図は、4 つの異なるテナント (図中の **A**、**B**、**C**、**D**) からのメッセージを含むマルチテナントキューを示しています。キューは定常状態で動作し、コンシューマーがキューに表示されるとすぐにメッセージを受信するため、メッセージバックログがありません。すべてのテナントのドウェル時間が短くなります。この定常状態では、すべてのコンシューマー容量が完全には活用されていません。

![\[4 つの異なるテナントからのメッセージを含むマルチテナントキュー (A、B、C、D で表示）。キューは定常状態にあり、処理中のメッセージはテナント間で均等に分散され、すべてのテナントにバックログがなく、ドウェル時間が短くなります。\]](http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/FQ1_updated_aligned.png)


**ノイジーネイバーの影響**

 マルチテナントキュー内の 1 つのテナントがバックログを作成し、他のすべてのテナントのメッセージのドウェル時間が長くなると、ノイジーネイバーの影響が発生します。テナントは、他のテナントより多くのメッセージを送信した場合や、そのテナントのメッセージをコンシューマーが処理するのに時間がかかる場合に、ノイジーネイバーとなることがあります。

 この図は、**テナント A** からのトラフィックの増加により、キューにバックログがどのように作成されるかについて示しています。コンシューマーは**テナント A** からのメッセージの処理に追われている間、他のテナントのメッセージはバックログで待機することになり、すべてのテナントのドウェル時間が長くなります。

![\[テナント A がトラフィックを増加し、キューにバックログを作成する場合の結果。テナント A のメッセージは処理中の状態で過剰に占められ、他のテナントのメッセージがバックログに滞留することで、ドウェル時間が長くなります。\]](http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/FQ2_updated_again_aligned.png)


**フェアキューによる軽減**

 Amazon SQS は、処理中にテナント間のメッセージ分散 (「処理中」の状態) をモニタリングすることで、ノイジーネイバーを検出します。あるテナントが他のテナントに比べて処理中のメッセージ数が不釣り合いに多い場合、Amazon SQS はそのテナントをノイジーネイバーとして識別し、他のテナントのメッセージ配信を優先します。このアプローチにより、他のテナントへのドウェル時間の影響が軽減されます。

この図は、Amazon SQS フェアキューがノイジーネイバー問題にどのように対処するかを示しています。あるテナント (**テナント A**) がノイジーな場合、Amazon SQS は他のテナント (**B**、**C**、**D**) からのメッセージを返すことを優先します。この優先順位付けにより、クワイエットテナントの**テナント B**、**C**、**D** のドウェル時間が短くなります。一方、**テナント A **のメッセージのドウェル時間は、他のテナントに影響を与ることなく、キューバックログが消費されるまで延長されます。

![\[処理中の状態をモニタリングすることで、フェアキューがノイジーネイバー問題に対処する方法を示す図。テナント A がノイジーな場合、SQS は他のテナント (B、C、D) からのメッセージを返して、処理中のメッセージがテナント間で均等に分散されるようにします。テナント (B、C、D) のドウェル時間は短いままで、テナント A のメッセージのドウェル時間はキューバックログが消費されるまで長くなります。\]](http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/FQ3_updated_aligned.png)


**注記**  
 Amazon SQS はテナントあたりの消費率を制限しません。これにより、コンシューマーの容量があり、キューに返すべき他のメッセージがない場合、ノイジーネイバーのテナントからのメッセージもコンシューマーが受信できるようにします。Amazon SQS 標準キューと同様に、フェアキューはほぼ無制限のスループットを提供し、キュー内のテナント数にも制限はありません。

Amazon SQS がノイズの多い近隣を検出し、メッセージ配信順序を管理する方法の詳細については、[Amazon SQS公平キューの仕組み](sqs-fair-queues-detailed.md)」を参照してください。

## 公平キューの使用方法
<a name="sqs-fair-queues-using-fair-queues"></a>

 公平キューを有効にするには、メッセージプロデューサーは`MessageGroupId`送信メッセージに を設定してテナント識別子を追加する必要があります。

```
// Send message with tenant identifier 
SendMessageRequest request = new SendMessageRequest()    
    .withQueueUrl(queueUrl)    
    .withMessageBody(messageBody)    
    .withMessageGroupId("tenant-123"); // Tenant identifier 
sqs.sendMessage(request);
```

 公平性機能は、MessageGroupId プロパティを持つメッセージに対して、すべての Amazon SQS 標準キューに自動的に適用されます。コンシューマーコードを変更する必要はありません。API レイテンシーには影響せず、スループットの制限もありません。

**注記**  
 `MessageGroupId` 公平キューを持つ標準キューの は、FIFO キュー`MessageGroupId`の動作と同じではありません。標準キューでは、 `MessageGroupId`は公平キューのテナント識別子としてのみ使用され、メッセージの順序付けは強制されません。`MessageGroupId` FIFO キューの詳細については、[Amazon SQS FIFO キューでのメッセージグループ ID の使用](using-messagegroupid-property.md)」を参照してください。

## 公平キューを使用するタイミング
<a name="sqs-fair-queues-when-to-use"></a>

以下のすべてがキューに適用される場合は、公平キューの使用を検討してください。
+ **キューはマルチテナントです。**キューは、顧客、クライアントアプリケーション、リクエストタイプなど、複数の論理エンティティに属するメッセージを保持し、 を使用して各エンティティを識別できます`MessageGroupId`。
+ **キューは高スループットです。**スループットが低い場合、あるテナントのバーストによって、他のテナントに影響を与えるバックログが作成されることはほとんどありません。高スループットでは、コンシューマーフリートをオーバースケーリングしてすべてのバーストを吸収することは実用的ではなく、自動スケーリングでも、新しいコンシューマーがオンラインになる前の遅延によりバックログが形成される可能性があります。
+ **ドウェル時間は、アプリケーションのサービス品質の一部です。**公平キューは、ノイズの多い隣人によるドウェル時間の増加からクワイエットテナントを保護します。アプリケーションがドウェル時間に敏感でない場合、ノイズの多い近隣保護の公平キューは必要ではない場合があります。

## フェアキュー CloudWatch メトリクス
<a name="sqs-fair-queues-cloudwatch-metrics"></a>

 Amazon SQS には、ノイジーネイバーの影響を軽減する状況をモニタリングするための追加の CloudWatch メトリクスを提供します。例えば、`Approximate..InQuietGroups` メトリクスを標準のキューレベルのメトリクスと比較できます。特定のテナントのトラフィックが急増すると、一般的なキューレベルのメトリクスによって、バックログの増加やメッセージ経過時間が古くなる可能性があります。ただし、クワイエットグループを個別に見ると、ほとんどのノイジーでないメッセージグループやテナントは影響を受けていないことが確認できます。

 以下に、ノイジーテナントが原因で標準キューバックログメトリクス (ApproximateNumberOfMessagesVisible) が増加し、ノイジーではないテナントのバックログ (ApproximateNumberOfMessagesVisibleInQuietGroups) は低いままである例を示します。

![\[ノイズの多いグループのキューバックログの急増を示すグラフ。クワイエットグループは低いままです。\]](http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/fair_queues_cw_metrics.png)


Amazon SQS CloudWatch メトリクスとその説明を含めた完全なリストについては、「[Amazon SQS の CloudWatch メトリクス](sqs-available-cloudwatch-metrics.md#sqs-metrics)」を参照してください。