

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

# Amazon Simple Queue Service を使用する
<a name="examples-sqs"></a>

このセクションでは、AWS SDK for Java 2.x を使用して [Amazon Simple Queue Service](https://docs.aws.amazon.com/sqs/) をプログラムする例を示します。

次の例には各手法を示すのに必要なコードのみが含まれます。[完全なサンプルコードは GitHub で入手できます](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2)。そこから、単一のソースファイルをダウンロードするかリポジトリをローカルにクローン作成して、ビルドし実行するためのすべての例を取得できます。

**Topics**
+ [自動リクエストバッチ処理を使用する](sqs-auto-batch.md)
+ [キューオペレーション](examples-sqs-message-queues.md)
+ [メッセージオペレーション](examples-sqs-messages.md)

# で Amazon SQS の自動リクエストバッチ処理を使用する AWS SDK for Java 2.x
<a name="sqs-auto-batch"></a>

Amazon SQS の自動リクエストバッチ処理 API は、SQS オペレーションのリクエストをバッチ処理およびバッファリングする効率的な方法を提供する高レベルライブラリです。バッチ処理 API を使用すると、SQS へのリクエストの数を減らすことができるため、スループットが向上し、コストが最小限に抑えられます。

バッチ処理 API メソッドは、`[SqsAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsAsyncClient.html)` メソッド (`sendMessage`、`changeMessageVisibility`、`deleteMessage`、`receiveMessage`) と一致するため、最小限の変更でドロップイン置換としてバッチ処理 API を使用できます。

このトピックでは、Amazon SQS の自動リクエストバッチ処理 API を設定して使用する方法の概要を説明します。

## 前提条件をチェックする
<a name="sqs-auto-batch-requirements"></a>

バッチ処理 API にアクセスするには、SDK for Java 2.x のバージョン *2.28.0* 以降を使用する必要があります。Maven `pom.xml` には、少なくとも次の要素が含まれている必要があります。

```
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>bom</artifactId>
            <version>2.28.231</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>sqs</artifactId>
    </dependency>
</dependencies>
```

1 [最新バージョン](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)

## バッチマネージャーを作成する
<a name="sqs-auto-batch-create"></a>

自動リクエストバッチ処理 API は、[SqsAsyncBatchManager](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html) インターフェイスによって実装されます。マネージャーのインスタンスは、いくつかの方法で作成できます。

### `SqsAsyncClient` を使用したデフォルト設定
<a name="sqs-batch-manager-create-default"></a>

バッチマネージャーを作成する最も簡単な方法は、既存の [SqsAsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsAsyncClient.html) インスタンスで `batchManager` ファクトリメソッドを呼び出すことです。次のスニペットは、シンプルなアプローチを示しています。

```
SqsAsyncClient asyncClient = SqsAsyncClient.create();
SqsAsyncBatchManager sqsAsyncBatchManager = asyncClient.batchManager();
```

この方法を使用する場合、`SqsAsyncBatchManager` インスタンスは [`SqsAsyncBatchManager` の設定を上書きする](#sqs-auto-batch-config-settings) セクションの表に示されているデフォルト値を使用します。さらに、`SqsAsyncBatchManager` インスタンスは、作成された `SqsAsyncClient` インスタンスの `ExecutorService` を使用します。

### `SqsAsyncBatchManager.Builder` を使用したカスタム設定
<a name="sqs-batch-manager-create-custom"></a>

より高度なユースケースでは、[https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.Builder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.Builder.html) を使用してバッチマネージャーをカスタマイズできます。このアプローチを使用して `SqsAsyncBatchManager` インスタンスを作成すると、バッチ処理の動作をファインチューニングできます。次のスニペットは、ビルダーを使用してバッチ処理の動作をカスタマイズする方法の例を示しています。

```
SqsAsyncBatchManager batchManager = SqsAsyncBatchManager.builder()
    .client(SqsAsyncClient.create())
    .scheduledExecutor(Executors.newScheduledThreadPool(5))
    .overrideConfiguration(b -> b
        .receiveMessageMinWaitDuration(Duration.ofSeconds(10))
        .receiveMessageVisibilityTimeout(Duration.ofSeconds(1))
        .receiveMessageAttributeNames(Collections.singletonList("*"))
        .receiveMessageSystemAttributeNames(Collections.singletonList(MessageSystemAttributeName.ALL)))
    .build();
```

このアプローチを使用すると、 [`SqsAsyncBatchManager` の設定を上書きする](#sqs-auto-batch-config-settings) セクションの表に表示される `BatchOverrideConfiguration` オブジェクトの設定を調整できます。このアプローチを使用して、バッチマネージャーにカスタム [https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html) を指定することもできます。

## メッセージを送信する
<a name="sqs-auto-batch-send"></a>

バッチマネージャーでメッセージを送信するには、 `[SqsAsyncBatchManager\$1sendMessage](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#sendMessage(software.amazon.awssdk.services.sqs.model.SendMessageRequest))` メソッドを使用します。SDK はリクエストをバッファリングし、 `maxBatchSize` または `sendRequestFrequency` の値に達するとバッチとして送信します。

次の例では、`sendMessage` リクエストの直後に別のリクエストが発生しています。この場合、SDK は両方のメッセージを 1 つのバッチで送信します。

```
// Sending the first message
CompletableFuture<SendMessageResponse> futureOne = 
    sqsAsyncBatchManager.sendMessage(r -> r.messageBody("One").queueUrl("queue"));

// Sending the second message
CompletableFuture<SendMessageResponse> futureTwo = 
    sqsAsyncBatchManager.sendMessage(r -> r.messageBody("Two").queueUrl("queue"));

// Waiting for both futures to complete and retrieving the responses
SendMessageResponse messageOne = futureOne.join();
SendMessageResponse messageTwo = futureTwo.join();
```

## メッセージの可視性タイムアウトを変更する
<a name="sqs-auto-batch-change-vis"></a>

[https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#changeMessageVisibility(java.util.function.Consumer)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#changeMessageVisibility(java.util.function.Consumer)) メソッドを使用して、メッセージの可視性タイムアウトをバッチで変更できます。SDK はリクエストをバッファリングし、 `maxBatchSize` または `sendRequestFrequency` の値に達するとバッチとして送信します。

次の例は、`changeMessageVisibility` メソッドを呼び出す方法を示しています。

```
CompletableFuture<ChangeMessageVisibilityResponse> futureOne =
    sqsAsyncBatchManager.changeMessageVisibility(r -> 
        r.receiptHandle("receiptHandle")
         .queueUrl("queue"));
ChangeMessageVisibilityResponse response = futureOne.join();
```

## メッセージの削除
<a name="sqs-auto-batch-delete"></a>

[https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#deleteMessage(java.util.function.Consumer)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#deleteMessage(java.util.function.Consumer)) メソッドを使用して、メッセージをバッチで削除できます。SDK はリクエストをバッファリングし、 `maxBatchSize` または `sendRequestFrequency` の値に達するとバッチとして送信します。

次の例は、 `deleteMessage` メソッドを呼び出す方法を示しています。

```
CompletableFuture<DeleteMessageResponse> futureOne = 
    sqsAsyncBatchManager.deleteMessage(r -> 
        r.receiptHandle("receiptHandle")
         .queueUrl("queue"));
DeleteMessageResponse response = futureOne.join();
```

## メッセージを受信する
<a name="sqs-auto-batch-receive"></a>

### デフォルト設定を使用する
<a name="sqs-auto-batch-receive-default-settings"></a>

アプリケーションで `[SqsAsyncBatchManager\$1receiveMessage](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/SqsAsyncBatchManager.html#receiveMessage(java.util.function.Consumer))` メソッドをポーリングすると、バッチマネージャーは内部バッファからメッセージを取得し、SDK は自動的にバックグラウンドで更新します。

次の例は、`receiveMessage` メソッドを呼び出す方法を示しています。

```
CompletableFuture<ReceiveMessageResponse> responseFuture = 
    sqsAsyncBatchManager.receiveMessage(r -> r.queueUrl("queueUrl"));
```

### カスタム設定を使用する
<a name="sqs-auto-batch-receive-custom-settings"></a>

例えばカスタム待機時間を設定し、取得するメッセージの数を指定してリクエストをさらにカスタマイズする場合は、次の例に示すようにリクエストをカスタマイズできます。

```
CompletableFuture<ReceiveMessageResponse> response = 
    sqsAsyncBatchManager.receiveMessage(r -> 
        r.queueUrl("queueUrl")
         .waitTimeSeconds(5)
         .visibilityTimeout(20));
```

**注記**  
次のいずれかのパラメータを含む `[ReceiveMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ReceiveMessageRequest.html)`で `receiveMessage` を呼び出すと、SDK はバッチマネージャーをバイパスし、通常の非同期 `receiveMessage` リクエストを送信します。  
`messageAttributeNames`
`messageSystemAttributeNames`
`messageSystemAttributeNamesWithStrings`
`overrideConfiguration`

## `SqsAsyncBatchManager` の設定を上書きする
<a name="sqs-auto-batch-config-settings"></a>

`SqsAsyncBatchManager` インスタンスを作成するときに、次の設定を調整できます。[https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/BatchOverrideConfiguration.Builder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/batchmanager/BatchOverrideConfiguration.Builder.html) では、以下の設定が可能です。


| 設定 | 説明 | デフォルトの値 | 
| --- | --- | --- | 
| maxBatchSize | SendMessageBatchRequest、ChangeMessageVisibilityBatchRequest、または DeleteMessageBatchRequest ごとのバッチあたりのリクエストの最大数。最大値は 10 です。 | 10 | 
| sendRequestFrequency |  すでに `maxBatchSize` に達していない場合の、バッチを送信するまでの時間。値を大きくするとリクエストは減少しますが、レイテンシーは増加する可能性があります。  | 200 ms | 
| receiveMessageVisibilityTimeout | メッセージの可視性タイムアウト。設定しない場合、キューのデフォルトが使用されます。 | キューのデフォルト | 
| receiveMessageMinWaitDuration | receiveMessage リクエストの最小待機時間。CPU の無駄を防ぐため、0 には設定しないでください。 | 50 ms | 
| receiveMessageSystemAttributeNames | receiveMessage 呼び出しをリクエストする[システム属性名](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/MessageSystemAttributeName.html)のリスト。 | なし | 
| receiveMessageAttributeNames | receiveMessage 呼び出しをリクエストする[属性名](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-metadata.html#sqs-message-attributes)のリスト。 | なし | 

# Amazon Simple Queue Service メッセージキューの操作
<a name="examples-sqs-message-queues"></a>

*メッセージキュー*は、メッセージを確実に送信するために使用される論理コンテナです Amazon Simple Queue Service。キューには、*標準*と*先入れ先出し* (FIFO) の 2 種類があります。キューおよびキュータイプ間の相違点の詳細については、「[Amazon Simple Queue Service デベロッパーガイド](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)」を参照してください。

このトピックでは、 を使用して Amazon Simple Queue Service キューの URL を作成、一覧表示、削除、取得する方法について説明します AWS SDK for Java。

次の例で使用されている `sqsClient` 変数は、次のスニペットから作成できます。

```
SqsClient sqsClient = SqsClient.create();
```

静的 `create()` メソッドを使用して `SqsClient` を作成すると、SDK は[デフォルトのリージョンプロバイダーチェーン](region-selection.md#default-region-provider-chain)によってリージョンを設定し、[デフォルトの認証情報プロバイダーチェーン](credentials-chain.md)によって認証情報を設定します。

## キューを作成する
<a name="sqs-create-queue"></a>

次のコードスニペットに示すように、`SqsClient’s` `createQueue` メソッドを使用し、キューパラメータを記述する `[CreateQueueRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/CreateQueueRequest.html)` オブジェクトを指定します。

 **インポート** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **コード** 

```
            CreateQueueRequest createQueueRequest = CreateQueueRequest.builder()
                .queueName(queueName)
                .build();

            sqsClient.createQueue(createQueueRequest);
```

GitHub の「[完全なサンプル](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L52)」をご覧ください。

## キューの一覧表示
<a name="sqs-list-queues"></a>

アカウントの Amazon Simple Queue Service キューを一覧表示するには、 `[ListQueuesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ListQueuesRequest.html)` オブジェクトを使用して `SqsClient’s``listQueues`メソッドを呼び出します。

パラメータを使用しない [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsClient.html#listQueues()](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsClient.html#listQueues()) メソッドの形式を使用すると、サービスは最大 1,000 個のキューを含む*すべてのキュー*を返します。

以下のコードに示すように、`[ListQueuesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ListQueuesRequest.html)` オブジェクトにキュー名のプレフィックスを指定して、そのプレフィックスに一致するキューの結果を絞り込むことができます。

 **インポート** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **コード** 

```
        String prefix = "que";

        try {
            ListQueuesRequest listQueuesRequest = ListQueuesRequest.builder().queueNamePrefix(prefix).build();
            ListQueuesResponse listQueuesResponse = sqsClient.listQueues(listQueuesRequest);

            for (String url : listQueuesResponse.queueUrls()) {
                System.out.println(url);
            }

        } catch (SqsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
```

GitHub の「[完全なサンプル](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L79)」をご覧ください。

## キューの URL の取得
<a name="sqs-get-queue-url"></a>

次のコードは、 `[GetQueueUrlRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/GetQueueUrlRequest.html)` オブジェクトを指定して `SqsClient’s` `getQueueUrl` メソッドを呼び出してキューの URL を取得する方法を示しています。

 **インポート** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **コード** 

```
            GetQueueUrlResponse getQueueUrlResponse =
                sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(queueName).build());
            String queueUrl = getQueueUrlResponse.queueUrl();
            return queueUrl;
```

GitHub の「[完全なサンプル](https://github.com/awsdocs/aws-doc-sdk-examples/blob/7486a1a092aa8e16a21698ef26f9d524fef62e55/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L70)」をご覧ください。

## キューの削除
<a name="sqs-delete-queue"></a>

`[DeleteQueueRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/DeleteQueueRequest.html)` オブジェクトへのキューの [URL](#sqs-get-queue-url) を指定します。次に、次のコードに示すように、 `SqsClient’s` `deleteQueue` メソッドを呼び出してキューを削除します。

 **インポート** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **コード** 

```
    public static void deleteSQSQueue(SqsClient sqsClient, String queueName) {

        try {

            GetQueueUrlRequest getQueueRequest = GetQueueUrlRequest.builder()
                    .queueName(queueName)
                    .build();

            String queueUrl = sqsClient.getQueueUrl(getQueueRequest).queueUrl();

            DeleteQueueRequest deleteQueueRequest = DeleteQueueRequest.builder()
                    .queueUrl(queueUrl)
                    .build();

            sqsClient.deleteQueue(deleteQueueRequest);

        } catch (SqsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

GitHub の「[完全なサンプル](https://github.com/awsdocs/aws-doc-sdk-examples/blob/6240df86c5f17eae1e23d1139d1435c7dc4b2a11/javav2/example_code/sqs/src/main/java/com/example/sqs/DeleteQueue.java#L48)」をご覧ください。

## 詳細情報
<a name="more-information"></a>
+  Amazon Simple Queue Service API リファレンスの [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) 
+  Amazon Simple Queue Service API リファレンスの [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html) 
+  Amazon Simple Queue Service API リファレンスの [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html) 
+  Amazon Simple Queue Service API リファレンスの [DeleteQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteQueue.html) 

# Amazon Simple Queue Service メッセージの送信、受信、削除
<a name="examples-sqs-messages"></a>

メッセージは、分散コンポーネントによって送受信できるデータの一部です。メッセージは、常に [SQS キュー](examples-sqs-message-queues.md)を使用して提供されます。

次の例で使用されている `sqsClient` 変数は、次のスニペットから作成できます。

```
SqsClient sqsClient = SqsClient.create();
```

静的 `create()` メソッドを使用して `SqsClient` を作成すると、SDK は[デフォルトのリージョンプロバイダーチェーン](region-selection.md#default-region-provider-chain)によってリージョンを設定し、[デフォルトの認証情報プロバイダーチェーン](credentials-chain.md)によって認証情報を設定します。

## メッセージの送信
<a name="sqs-message-send"></a>

SqsClient クライアント`sendMessage`メソッドを呼び出して、 Amazon Simple Queue Service キューに 1 つのメッセージを追加します。キューの [URL](examples-sqs-message-queues.md#sqs-get-queue-url)、メッセージ本文、およびオプションの遅延値 (秒単位) が含まれる [SendMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageRequest.html) オブジェクトを指定します。

 **インポート** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **コード** 

```
            sqsClient.sendMessage(SendMessageRequest.builder()
                .queueUrl(queueUrl)
                .messageBody("Hello world!")
                .delaySeconds(10)
                .build());

            sqsClient.sendMessage(sendMsgRequest);
```

## リクエストで複数のメッセージを送信する
<a name="sqs-messages-send-multiple"></a>

SqsClient の `sendMessageBatch` メソッドを使用して 1 つのリクエストで複数のメッセージを送信します。このメソッドは、キューの URL と送信するメッセージのリストを含む [SendMessageBatchRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageBatchRequest.html) を受け取ります (各メッセージは [SendMessageBatchRequestEntry](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SendMessageBatchRequestEntry.html))。また、メッセージの遅延値を設定して、特定のメッセージの送信を遅延させることもできます。

 **インポート** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **コード** 

```
            SendMessageBatchRequest sendMessageBatchRequest = SendMessageBatchRequest.builder()
                .queueUrl(queueUrl)
                .entries(SendMessageBatchRequestEntry.builder().id("id1").messageBody("Hello from msg 1").build(),
                        SendMessageBatchRequestEntry.builder().id("id2").messageBody("msg 2").delaySeconds(10).build())
                .build();
            sqsClient.sendMessageBatch(sendMessageBatchRequest);
```

GitHub の「[完全なサンプル](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L133)」をご覧ください。

## メッセージを取得する
<a name="sqs-messages-receive"></a>

キューに現在含まれているメッセージを取得するには、SqsClient の `receiveMessage` メソッドを呼び出します。このメソッドは、キュー URL を含む [ReceiveMessageRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/ReceiveMessageRequest.html) を受け取ります。また、返るメッセージの最大数を指定することもできます。メッセージは、[Message](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/Message.html) オブジェクトのリストとして返されます。

 **インポート** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **コード** 

```
        try {
            ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder()
                .queueUrl(queueUrl)
                .maxNumberOfMessages(5)
                .build();
            List<Message> messages = sqsClient.receiveMessage(receiveMessageRequest).messages();
            return messages;
        } catch (SqsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return null;
```

GitHub の「[完全なサンプル](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L148)」をご覧ください。

## 受信後にメッセージを削除する
<a name="sqs-messages-delete"></a>

メッセージを受信し、その内容を処理した後で、メッセージをキューから削除するには、メッセージの受信ハンドルとキュー URL を `SqsClient's` [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsClient.html#deleteMessage(software.amazon.awssdk.services.sqs.model.DeleteMessageRequest)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/SqsClient.html#deleteMessage(software.amazon.awssdk.services.sqs.model.DeleteMessageRequest)) メソッドに送信します。

 **インポート** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
import java.util.List;
```

 **コード** 

```
        try {
            for (Message message : messages) {
                DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder()
                        .queueUrl(queueUrl)
                        .receiptHandle(message.receiptHandle())
                        .build();
                sqsClient.deleteMessage(deleteMessageRequest);
            }
```

GitHub の「[完全なサンプル](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/sqs/src/main/java/com/example/sqs/SQSExample.java#L187)」をご覧ください。

## 詳細情報
<a name="more-info"></a>
+  デベロッパーガイド[の Amazon Simple Queue Service キューの仕組み](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-architecture.html) Amazon Simple Queue Service 
+  Amazon Simple Queue Service API リファレンスの [SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) 
+  Amazon Simple Queue Service API リファレンスの [SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html) 
+  Amazon Simple Queue Service API リファレンスの [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) 
+  Amazon Simple Queue Service API リファレンスの [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html) 