

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Beispiele für Amazon SQS Java SDK
<a name="sqs-java-tutorials"></a>

 AWS SDK für Java Damit können Sie Java-Anwendungen erstellen, die mit Amazon SQS und anderen AWS-Services interagieren.
+ Zur Installation und Einrichtung des SDK siehe [Erste Schritte](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/getting-started.html) im *AWS SDK for Java 2.x -Entwicklerleitfaden*.
+ *Informationen zu grundlegenden Warteschlangenvorgängen — wie das Erstellen einer Warteschlange oder das Senden einer Nachricht — finden Sie unter [Arbeiten mit Amazon SQS](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/sqs-examples.html) Message Queues im Entwicklerhandbuch.AWS SDK for Java 2.x *
+ Dieses Handbuch enthält auch Beispiele für zusätzliche Amazon SQS SQS-Funktionen, wie z. B.:
  + [Serverseitige Verschlüsselung mit Amazon SQS SQS-Warteschlangen verwenden](sqs-java-configure-sse.md)
  + [Konfiguration von Tags für eine Amazon SQS SQS-Warteschlange](sqs-java-add-update-remove-tag-queue.md)
  + [Nachrichtenattribute an eine Amazon SQS SQS-Warteschlange senden](sqs-java-send-message-with-attributes.md)

# Serverseitige Verschlüsselung mit Amazon SQS SQS-Warteschlangen verwenden
<a name="sqs-java-configure-sse"></a>

Verwenden Sie die AWS SDK für Java , um serverseitige Verschlüsselung (SSE) zu einer Amazon SQS SQS-Warteschlange hinzuzufügen. Jede Warteschlange verwendet einen AWS Key Management Service (AWS KMS)-KMS-Schlüssel, um die Datenverschlüsselungsschlüssel zu generieren. In diesem Beispiel wird der von AWS verwaltete KMS-Schlüssel für Amazon SQS verwendet.

Weitere Informationen zum Verwenden von SSE und zur Rolle des KMS-Schlüssels finden Sie unter [Verschlüsselung im Ruhezustand in Amazon SQS](sqs-server-side-encryption.md). 

## Hinzufügen von SSE zu einer vorhandenen Warteschlange
<a name="sqs-java-configure-sse-existing-queue"></a>

Um die serverseitige Verschlüsselung für eine vorhandene Warteschlange zu aktivieren, verwenden Sie die `[SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)`-Methode, um das `KmsMasterKeyId`-Attribut festzulegen.

Im folgenden Codebeispiel wird der AWS KMS key als AWS verwalteter KMS-Schlüssel für Amazon SQS festgelegt. Das Beispiel legt außerdem den [Zeitraum für die AWS KMS key -Wiederverwendung](sqs-server-side-encryption.md#sqs-sse-key-terms) auf 140 Sekunden fest.

 Bevor Sie den Beispielcode ausführen, stellen Sie sicher, dass Sie Ihre AWS Anmeldeinformationen festgelegt haben. Weitere Informationen finden Sie unter [Einrichten von AWS Anmeldeinformationen und Region für die Entwicklung](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) im *AWS SDK for Java 2.x Entwicklerhandbuch*. 

```
    public static void addEncryption(String queueName, String kmsMasterKeyAlias) {
        SqsClient sqsClient = SqsClient.create();

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

        GetQueueUrlResponse getQueueUrlResponse;
        try {
            getQueueUrlResponse = sqsClient.getQueueUrl(urlRequest);
        } catch (QueueDoesNotExistException e) {
            LOGGER.error(e.getMessage(), e);
            throw new RuntimeException(e);
        }
        String queueUrl = getQueueUrlResponse.queueUrl();


        Map<QueueAttributeName, String> attributes = Map.of(
                QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias,
                QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140" // Set the data key reuse period to 140 seconds.
        );                                                                  // This is how long SQS can reuse the data key before requesting a new one from KMS.

        SetQueueAttributesRequest attRequest = SetQueueAttributesRequest.builder()
                .queueUrl(queueUrl)
                .attributes(attributes)
                .build();
        try {
            sqsClient.setQueueAttributes(attRequest);
            LOGGER.info("The attributes have been applied to {}", queueName);
        } catch (InvalidAttributeNameException | InvalidAttributeValueException e) {
            LOGGER.error(e.getMessage(), e);
            throw new RuntimeException(e);
        } finally {
            sqsClient.close();
        }
    }
```

## Deaktivieren von SSE für eine Warteschlange
<a name="sqs-java-disable-sse"></a>

Um die serverseitige Verschlüsselung für eine vorhandene Warteschlange zu deaktivieren, setzen Sie das Attribut `KmsMasterKeyId` mit der Aktion `SetQueueAttributes` auf eine leere Zeichenfolge.

**Wichtig**  
`null` ist kein gültiger Wert für `KmsMasterKeyId`.

## Erstellen einer Warteschlange mit SSE
<a name="sqs-java-configure-sse-create-queue"></a>

Um SSE beim Erstellen der Warteschlange zu aktivieren, fügen Sie das `KmsMasterKeyId`-Attribut der `[CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)`-API-Methode hinzu.

Das folgende Beispiel erstellt eine neue Warteschlange mit aktivierter SSE. Die Warteschlange verwendet den von AWS verwalteten KMS-Schlüssel für Amazon SQS. Das Beispiel legt außerdem den [Zeitraum für die AWS KMS key -Wiederverwendung](sqs-server-side-encryption.md#sqs-sse-key-terms) auf 160 Sekunden fest.

 Bevor Sie den Beispielcode ausführen, stellen Sie sicher, dass Sie Ihre AWS Anmeldeinformationen festgelegt haben. Weitere Informationen finden Sie unter [Einrichten von AWS Anmeldeinformationen und Region für die Entwicklung](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) im *AWS SDK for Java 2.x Entwicklerhandbuch*. 

```
// Create an SqsClient for the specified Region.
SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build();

// Create a hashmap for the attributes. Add the key alias and reuse period to the hashmap.
HashMap<QueueAttributeName, String> attributes = new HashMap<QueueAttributeName, String>();
final String kmsMasterKeyAlias = "alias/aws/sqs";  // the alias of the AWS managed KMS key for Amazon SQS.
attributes.put(QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias);
attributes.put(QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140");				

// Add the attributes to the CreateQueueRequest.
CreateQueueRequest createQueueRequest =
                CreateQueueRequest.builder()
                        .queueName(queueName)
                        .attributes(attributes)
                        .build();
sqsClient.createQueue(createQueueRequest);
```

## Abrufen der SSE-Attribute
<a name="sqs-java-get-sse-attributes"></a>

Informationen zum Abrufen von Warteschlangenattributen finden Sie unter [Beispiele](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html#API_GetQueueAttributes_Examples) in der *Amazon-Simple-Queue-Service-API-Referenz*.

Um die KMS-Schlüssel-ID oder den Zeitraum für die Wiederverwendung des Datenschlüssels für eine bestimmte Warteschlange abzurufen, führen Sie die `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)`-Methode aus und rufen Sie die Werte `KmsMasterKeyId` und `KmsDataKeyReusePeriodSeconds` ab.

# Konfiguration von Tags für eine Amazon SQS SQS-Warteschlange
<a name="sqs-java-add-update-remove-tag-queue"></a>

Sie können Ihren Amazon-SQS-Warteschlangen Kostenzuordnungs-Tags hinzufügen, um sie zu organisieren und zu identifizieren. Die folgenden Beispiele veranschaulichen, wie Tags mithilfe von AWS SDK für Java konfiguriert werden. Weitere Informationen finden Sie unter [Amazon-SQS-Kostenzuordnungs-Tags](sqs-queue-tags.md).

 Bevor Sie den Beispielcode ausführen, stellen Sie sicher, dass Sie Ihre AWS Anmeldeinformationen festgelegt haben. Weitere Informationen finden Sie unter [Einrichten von AWS Anmeldeinformationen und Region für die Entwicklung](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) im *AWS SDK for Java 2.x Entwicklerhandbuch*. 

## Auflisten von Tags
<a name="sqs-java-list-tags"></a>

Verwenden Sie die `ListQueueTags`-Methode, um die Tags für eine Warteschlange aufzulisten.

```
// Create an SqsClient for the specified region.
SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build();

// Get the queue URL.
String queueName = "MyStandardQ1";
GetQueueUrlResponse getQueueUrlResponse =
        sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(queueName).build());
String queueUrl = getQueueUrlResponse.queueUrl();

// Create the ListQueueTagsRequest.
final ListQueueTagsRequest listQueueTagsRequest = 
                                  ListQueueTagsRequest.builder().queueUrl(queueUrl).build();

// Retrieve the list of queue tags and print them.
final ListQueueTagsResponse listQueueTagsResponse =
                                  sqsClient.listQueueTags(listQueueTagsRequest);
System.out.println(String.format("ListQueueTags: \tTags for queue %s are %s.\n",
                queueName, listQueueTagsResponse.tags() ));
```

## Hinzufügen oder Aktualisieren von Tags
<a name="sqs-java-add-tags"></a>

Verwenden Sie die `TagQueue`-Methode, um Tag-Werte für eine Warteschlange hinzuzufügen oder zu aktualisieren.

```
 // Create an SqsClient for the specified Region.
SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build();

// Get the queue URL.
String queueName = "MyStandardQ1";
GetQueueUrlResponse getQueueUrlResponse =
        sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(queueName).build());
String queueUrl = getQueueUrlResponse.queueUrl();	

// Build a hashmap of the tags.
final HashMap<String, String> addedTags = new HashMap<>();
        addedTags.put("Team", "Development");
        addedTags.put("Priority", "Beta");
        addedTags.put("Accounting ID", "456def");

//Create the TagQueueRequest and add them to the queue.
final TagQueueRequest tagQueueRequest = TagQueueRequest.builder()
        .queueUrl(queueUrl)
        .tags(addedTags)
        .build();
sqsClient.tagQueue(tagQueueRequest);
```

## Entfernen von Tags
<a name="sqs-java-remove-tags"></a>

Verwenden Sie die `UntagQueue`-Methode, um ein oder mehrere Tags aus der Warteschlange zu entfernen. Im folgenden Beispiel wird das `Accounting ID`-Tag entfernt.

```
 
// Create the UntagQueueRequest.
final UntagQueueRequest untagQueueRequest = UntagQueueRequest.builder()
        .queueUrl(queueUrl)
        .tagKeys("Accounting ID")
        .build();
        
// Remove the tag from this queue.
sqsClient.untagQueue(untagQueueRequest);
```

# Nachrichtenattribute an eine Amazon SQS SQS-Warteschlange senden
<a name="sqs-java-send-message-with-attributes"></a>

Sie können strukturierte Metadaten (wie etwa Zeitstempel, geospatiale Daten, Signaturen und Kennungen) in Nachrichten einschließen, indem Sie *Nachrichtenattribute* verwenden. Weitere Informationen finden Sie unter [Amazon-SQS-Nachrichtenattribute](sqs-message-metadata.md#sqs-message-attributes).

 Bevor Sie den Beispielcode ausführen, stellen Sie sicher, dass Sie Ihre AWS Anmeldeinformationen festgelegt haben. Weitere Informationen finden Sie unter [Einrichten von AWS Anmeldeinformationen und Region für die Entwicklung](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) im *AWS SDK for Java 2.x Entwicklerhandbuch*. 

## Definieren von Attributen
<a name="sqs-java-define-attributes"></a>

Fügen Sie zum Definieren eines Attributs für eine Nachricht den folgenden Code hinzu, der den `[MessageAttributeValue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_MessageAttributeValue.html)`-Datentyp verwendet. Weitere Informationen erhalten Sie unter [Nachrichtenattributkomponenten](sqs-message-metadata.md#message-attribute-components) und [Datentypen für Nachrichtenattribute](sqs-message-metadata.md#message-attribute-data-types).

Der berechnet AWS SDK für Java automatisch die Prüfsummen für den Nachrichtentext und die Nachrichtenattribute und vergleicht sie mit den Daten, die Amazon SQS zurückgibt. Weitere Informationen finden Sie im *[AWS SDK for Java 2.x -Entwicklerhandbuch](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/)* und in [Berechnung des MD5 Message Digest für Nachrichtenattribute](sqs-message-metadata.md#sqs-attributes-md5-message-digest-calculation) für andere Programmiersprachen.

------
#### [ String ]

Dieses Beispiel definiert ein `String`-Attribut mit der Bezeichnung `Name` und dem Wert `Jane`.

```
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("Name", new MessageAttributeValue()
.withDataType("String")
.withStringValue("Jane"));
```

------
#### [ Number ]

Dieses Beispiel definiert ein `Number`-Attribut mit der Bezeichnung `AccurateWeight` und dem Wert `230.000000000000000001`.

```
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("AccurateWeight", new MessageAttributeValue()
.withDataType("Number")
.withStringValue("230.000000000000000001"));
```

------
#### [ Binary ]

Dieses Beispiel definiert ein `Binary`-Attribut mit dem Namen `ByteArray` und dem Wert eines nicht initialisierten 10-Byte-Arrays.

```
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("ByteArray", new MessageAttributeValue()
.withDataType("Binary")
.withBinaryValue(ByteBuffer.wrap(new byte[10])));
```

------
#### [ String (custom) ]

Dieses Beispiel definiert das benutzerdefinierte Attribut `String.EmployeeId` mit der Bezeichnung `EmployeeId` und dem Wert `ABC123456`.

```
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("EmployeeId", new MessageAttributeValue()
.withDataType("String.EmployeeId")
.withStringValue("ABC123456"));
```

------
#### [ Number (custom) ]

Dieses Beispiel definiert das benutzerdefinierte Attribut `Number.AccountId` mit der Bezeichnung `AccountId` und dem Wert `000123456`.

```
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("AccountId", new MessageAttributeValue()
.withDataType("Number.AccountId")
.withStringValue("000123456"));
```

**Anmerkung**  
Da der Basisdatentyp `Number` ist, gibt die `[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)`-Aktion `123456` zurück.

------
#### [ Binary (custom) ]

Dieses Beispiel definiert das benutzerdefinierte Attribut `Binary.JPEG` mit dem Namen `ApplicationIcon` und dem Wert eines nicht initialisierten 10-Byte-Arrays.

```
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("ApplicationIcon", new MessageAttributeValue()
.withDataType("Binary.JPEG")
.withBinaryValue(ByteBuffer.wrap(new byte[10])));
```

------

## Senden einer Nachricht mit Attributen
<a name="sqs-java-send-attributes"></a>

In diesem Beispiel werden die Attribute der `SendMessageRequest` hinzugefügt, bevor die Nachricht gesendet wird.

```
// Send a message with an attribute.
final SendMessageRequest sendMessageRequest = new SendMessageRequest();
sendMessageRequest.withMessageBody("This is my message text.");
sendMessageRequest.withQueueUrl(myQueueUrl);
sendMessageRequest.withMessageAttributes(messageAttributes);
sqs.sendMessage(sendMessageRequest);
```

**Wichtig**  
Wenn Sie eine Nachricht an eine First-In-First-Out (FIFO-) Warteschlange senden, stellen Sie sicher, dass die `sendMessage` Methode ausgeführt wird, *nachdem* Sie die Nachrichtengruppen-ID angegeben haben.  
Wenn Sie die `[SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)`-Aktion anstelle von `[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)` verwenden, müssen Sie Nachrichtenattribute für jede Nachricht in dem Stapel angeben.