

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Contoh Amazon SQS Java SDK
<a name="sqs-java-tutorials"></a>

 AWS SDK untuk Java Ini memungkinkan Anda membangun aplikasi Java yang berinteraksi dengan Amazon SQS dan lainnya. Layanan AWS
+ Untuk menginstal dan menyiapkan SDK, lihat [Memulai](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/getting-started.html) di *Panduan AWS SDK for Java 2.x Pengembang*.
+ *Untuk operasi antrean dasar—seperti membuat antrean atau mengirim pesan—lihat [Bekerja dengan Antrian Pesan Amazon SQS](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/sqs-examples.html) di Panduan Pengembang.AWS SDK for Java 2.x *
+ Panduan ini juga mencakup contoh fitur Amazon SQS tambahan, seperti:
  + [Menggunakan enkripsi sisi server dengan antrian Amazon SQS](sqs-java-configure-sse.md)
  + [Mengkonfigurasi tag untuk antrian Amazon SQS](sqs-java-add-update-remove-tag-queue.md)
  + [Mengirim atribut pesan ke antrian Amazon SQS](sqs-java-send-message-with-attributes.md)

# Menggunakan enkripsi sisi server dengan antrian Amazon SQS
<a name="sqs-java-configure-sse"></a>

Gunakan AWS SDK untuk Java untuk menambahkan enkripsi sisi server (SSE) ke antrean Amazon SQS. Setiap antrian menggunakan kunci AWS Key Management Service (AWS KMS) KMS untuk menghasilkan kunci enkripsi data. Contoh ini menggunakan kunci KMS AWS terkelola untuk Amazon SQS.

Untuk informasi selengkapnya tentang penggunaan SSE dan peran kunci KMS, lihat. [Enkripsi saat istirahat di Amazon SQS](sqs-server-side-encryption.md) 

## Menambahkan SSE ke antrian yang ada
<a name="sqs-java-configure-sse-existing-queue"></a>

Untuk mengaktifkan enkripsi sisi server untuk antrian yang ada, gunakan `[SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)` metode untuk mengatur atribut. `KmsMasterKeyId`

Contoh kode berikut menetapkan AWS KMS key sebagai kunci KMS AWS terkelola untuk Amazon SQS. Contoh ini juga mengatur [periode AWS KMS key penggunaan kembali](sqs-server-side-encryption.md#sqs-sse-key-terms) menjadi 140 detik.

 Sebelum Anda menjalankan kode contoh, pastikan Anda telah menetapkan AWS kredensialnya. Untuk informasi selengkapnya, lihat [Menyiapkan AWS Kredensial dan Wilayah untuk Pengembangan](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) di Panduan *AWS SDK for Java 2.x Pengembang*. 

```
    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();
        }
    }
```

## Menonaktifkan SSE untuk antrian
<a name="sqs-java-disable-sse"></a>

Untuk menonaktifkan enkripsi sisi server untuk antrian yang ada, setel `KmsMasterKeyId` atribut ke string kosong menggunakan metode. `SetQueueAttributes`

**penting**  
`null` bukanlah nilai yang valid untuk `KmsMasterKeyId`.

## Membuat antrian dengan SSE
<a name="sqs-java-configure-sse-create-queue"></a>

Untuk mengaktifkan SSE saat Anda membuat antrian, tambahkan `KmsMasterKeyId` atribut ke metode `[CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)` API.

Contoh berikut membuat antrian baru dengan SSE diaktifkan. Antrian menggunakan kunci KMS AWS terkelola untuk Amazon SQS. Contoh ini juga mengatur [periode AWS KMS key penggunaan kembali](sqs-server-side-encryption.md#sqs-sse-key-terms) menjadi 160 detik.

 Sebelum Anda menjalankan kode contoh, pastikan Anda telah menetapkan AWS kredensialnya. Untuk informasi selengkapnya, lihat [Menyiapkan AWS Kredensial dan Wilayah untuk Pengembangan](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) di Panduan *AWS SDK for Java 2.x Pengembang*. 

```
// 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);
```

## Mengambil atribut SSE
<a name="sqs-java-get-sse-attributes"></a>

Untuk informasi tentang mengambil atribut antrian, lihat [Contoh](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html#API_GetQueueAttributes_Examples) di Referensi API *Layanan Antrian Sederhana Amazon*.

Untuk mengambil ID kunci KMS atau periode penggunaan kembali kunci data untuk antrian tertentu, jalankan `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)` metode dan ambil nilai dan. `KmsMasterKeyId` `KmsDataKeyReusePeriodSeconds`

# Mengkonfigurasi tag untuk antrian Amazon SQS
<a name="sqs-java-add-update-remove-tag-queue"></a>

Gunakan tag alokasi biaya untuk membantu mengatur dan mengidentifikasi antrian Amazon SQS Anda. Contoh berikut menunjukkan cara mengkonfigurasi tag menggunakan AWS SDK untuk Java. Untuk informasi selengkapnya, lihat [Tag alokasi biaya Amazon SQS](sqs-queue-tags.md).

 Sebelum Anda menjalankan kode contoh, pastikan Anda telah menetapkan AWS kredensialnya. Untuk informasi selengkapnya, lihat [Menyiapkan AWS Kredensial dan Wilayah untuk Pengembangan](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) di Panduan *AWS SDK for Java 2.x Pengembang*. 

## Mencantumkan tanda
<a name="sqs-java-list-tags"></a>

Untuk membuat daftar tag untuk antrian, gunakan `ListQueueTags` metode ini.

```
// 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() ));
```

## Menambahkan atau memperbarui tag
<a name="sqs-java-add-tags"></a>

Untuk menambahkan atau memperbarui nilai tag untuk antrian, gunakan `TagQueue` metode ini.

```
 // 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);
```

## Menghapus tanda
<a name="sqs-java-remove-tags"></a>

Untuk menghapus satu atau beberapa tag dari antrian, gunakan `UntagQueue` metode ini. Contoh berikut menghapus `Accounting ID` tag.

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

# Mengirim atribut pesan ke antrian Amazon SQS
<a name="sqs-java-send-message-with-attributes"></a>

*Anda dapat menyertakan metadata terstruktur (seperti stempel waktu, data geospasial, tanda tangan, dan pengenal) dengan pesan menggunakan atribut pesan.* Untuk informasi selengkapnya, lihat [Atribut pesan Amazon SQS](sqs-message-metadata.md#sqs-message-attributes).

 Sebelum Anda menjalankan kode contoh, pastikan Anda telah menetapkan AWS kredensialnya. Untuk informasi selengkapnya, lihat [Mengatur AWS Kredensial dan Wilayah untuk Pengembangan](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) di Panduan *AWS SDK for Java 2.x Pengembang*. 

## Mendefinisikan atribut
<a name="sqs-java-define-attributes"></a>

Untuk menentukan atribut untuk pesan, tambahkan kode berikut, yang menggunakan tipe `[MessageAttributeValue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_MessageAttributeValue.html)` data. Untuk informasi selengkapnya, lihat [Komponen atribut pesan](sqs-message-metadata.md#message-attribute-components) dan [Tipe data atribut pesan](sqs-message-metadata.md#message-attribute-data-types).

 AWS SDK untuk Java Secara otomatis menghitung checksum isi pesan dan atribut pesan dan membandingkannya dengan data yang dikembalikan Amazon SQS. Untuk informasi selengkapnya, lihat *[Panduan AWS SDK for Java 2.x Pengembang](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/)* dan [Menghitung intisari MD5 pesan untuk atribut pesan](sqs-message-metadata.md#sqs-attributes-md5-message-digest-calculation) untuk bahasa pemrograman lainnya.

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

Contoh ini mendefinisikan `String` atribut bernama `Name` dengan nilai`Jane`.

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

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

Contoh ini mendefinisikan `Number` atribut bernama `AccurateWeight` dengan nilai`230.000000000000000001`.

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

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

Contoh ini mendefinisikan `Binary` atribut bernama `ByteArray` dengan nilai array 10-byte yang tidak diinisialisasi.

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

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

Contoh ini mendefinisikan atribut kustom `String.EmployeeId` bernama `EmployeeId` dengan nilai`ABC123456`.

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

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

Contoh ini mendefinisikan atribut kustom `Number.AccountId` bernama `AccountId` dengan nilai`000123456`.

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

**catatan**  
Karena tipe data dasar adalah`Number`, `[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)` metode kembali`123456`.

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

Contoh ini mendefinisikan atribut kustom `Binary.JPEG` bernama `ApplicationIcon` dengan nilai array 10-byte yang tidak diinisialisasi.

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

------

## Mengirim pesan dengan atribut
<a name="sqs-java-send-attributes"></a>

Contoh ini menambahkan atribut ke `SendMessageRequest` sebelum mengirim pesan.

```
// 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);
```

**penting**  
Jika Anda mengirim pesan ke antrian First-In-First-Out (FIFO), pastikan `sendMessage` metode dijalankan *setelah* Anda memberikan ID grup pesan.  
Jika Anda menggunakan `[SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)` metode, bukan`[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)`, Anda harus menentukan atribut pesan untuk setiap pesan dalam batch.