

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

# Contoh kode Amazon SQS menggunakan AWS SDK untuk C\$1\$1
<a name="examples-sqs"></a>

Amazon Simple Queue Service (Amazon SQS) adalah layanan antrian pesan yang dikelola sepenuhnya yang memudahkan untuk memisahkan dan menskalakan layanan mikro, sistem terdistribusi, dan aplikasi tanpa server. Anda dapat menggunakan contoh berikut untuk memprogram [Amazon SQS menggunakan file](https://aws.amazon.com/sqs). AWS SDK untuk C\$1\$1

**catatan**  
Hanya kode yang diperlukan untuk menunjukkan teknik tertentu yang disediakan dalam Panduan ini, tetapi [kode contoh lengkap tersedia di GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp). Pada GitHub Anda dapat mengunduh satu file sumber atau Anda dapat mengkloning repositori secara lokal untuk mendapatkan, membangun, dan menjalankan semua contoh.

**Topics**
+ [Bekerja dengan Antrian Pesan Amazon SQS](examples-sqs-message-queues.md)
+ [Mengirim, Menerima, dan Menghapus Pesan Amazon SQS](examples-sqs-messages.md)
+ [Mengaktifkan Polling Panjang untuk Antrian Pesan Amazon SQS](examples-sqs-long-polling.md)
+ [Menyetel Batas Waktu Visibilitas di Amazon SQS](examples-sqs-visibility-timeout.md)
+ [Menggunakan Antrian Surat Mati di Amazon SQS](examples-sqs-dead-letter-queues.md)

# Bekerja dengan Antrian Pesan Amazon SQS
<a name="examples-sqs-message-queues"></a>

*Antrian pesan* adalah wadah logis yang Anda gunakan untuk mengirim pesan dengan andal di Amazon SQS. Ada dua jenis antrian: *standar* dan *first-in, first-out* (FIFO). Untuk mempelajari lebih lanjut tentang antrian dan perbedaan antara jenis ini, lihat Panduan Pengembang [Layanan Antrian Sederhana Amazon](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/).

Contoh C\$1\$1 ini menunjukkan cara menggunakan file AWS SDK untuk C\$1\$1 untuk membuat, membuat daftar, menghapus, dan mendapatkan URL antrian Amazon SQS.

## Prasyarat
<a name="codeExamplePrereq"></a>

Sebelum Anda mulai, kami sarankan Anda membaca [Memulai menggunakan AWS SDK untuk C\$1\$1](getting-started.md). 

Unduh kode contoh dan buat solusinya seperti yang dijelaskan dalam[Memulai contoh kode](getting-started-code-examples.md). 

Untuk menjalankan contoh, profil pengguna yang digunakan kode Anda untuk membuat permintaan harus memiliki izin yang tepat AWS (untuk layanan dan tindakan). Untuk informasi selengkapnya, lihat [Menyediakan AWS kredensi](credentials.md).

## Buat Antrian
<a name="sqs-create-queue"></a>

Gunakan fungsi `CreateQueue` anggota SQSClient kelas, dan berikan dengan [CreateQueueRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_create_queue_request.html)objek yang menggambarkan parameter antrian.

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/CreateQueueRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::CreateQueueRequest request;
    request.SetQueueName(queueName);

    const Aws::SQS::Model::CreateQueueOutcome outcome = sqsClient.CreateQueue(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully created queue " << queueName << " with a queue URL "
                  << outcome.GetResult().GetQueueUrl() << "." << std::endl;
    }
    else {
        std::cerr << "Error creating queue " << queueName << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/create_queue.cpp).

## Daftar Antrian
<a name="sqs-list-queues"></a>

Untuk mencantumkan antrian Amazon SQS untuk akun Anda, panggil fungsi `ListQueues` anggota SQSClient kelas, dan berikan objek. [ListQueuesRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_list_queues_request.html)

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/ListQueuesRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::ListQueuesRequest listQueuesRequest;

    Aws::String nextToken; // Used for pagination.
    Aws::Vector<Aws::String> allQueueUrls;

    do {
        if (!nextToken.empty()) {
            listQueuesRequest.SetNextToken(nextToken);
        }
        const Aws::SQS::Model::ListQueuesOutcome outcome = sqsClient.ListQueues(
                listQueuesRequest);
        if (outcome.IsSuccess()) {
            const Aws::Vector<Aws::String> &queueUrls = outcome.GetResult().GetQueueUrls();
            allQueueUrls.insert(allQueueUrls.end(),
                                queueUrls.begin(),
                                queueUrls.end());

            nextToken = outcome.GetResult().GetNextToken();
        }
        else {
            std::cerr << "Error listing queues: " <<
                      outcome.GetError().GetMessage() << std::endl;
            return false;
        }

    } while (!nextToken.empty());

    std::cout << allQueueUrls.size() << " Amazon SQS queue(s) found." << std::endl;
    for (const auto &iter: allQueueUrls) {
        std::cout << " " << iter << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/list_queues.cpp).

## Dapatkan URL Antrian
<a name="sqs-get-queue-url"></a>

Untuk mendapatkan URL antrian Amazon SQS yang ada, panggil fungsi anggota SQSClient kelas`GetQueueUrl`.

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/GetQueueUrlRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::GetQueueUrlRequest request;
    request.SetQueueName(queueName);

    const Aws::SQS::Model::GetQueueUrlOutcome outcome = sqsClient.GetQueueUrl(request);
    if (outcome.IsSuccess()) {
        std::cout << "Queue " << queueName << " has url " <<
                  outcome.GetResult().GetQueueUrl() << std::endl;
    }
    else {
        std::cerr << "Error getting url for queue " << queueName << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/get_queue_url.cpp).

## Hapus Antrian
<a name="sqs-delete-queue"></a>

Berikan [URL](#sqs-get-queue-url) ke fungsi `DeleteQueue` anggota SQSClient kelas.

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/core/client/DefaultRetryStrategy.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/DeleteQueueRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::Model::DeleteQueueRequest request;
    request.SetQueueUrl(queueURL);

    const Aws::SQS::Model::DeleteQueueOutcome outcome = sqsClient.DeleteQueue(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully deleted queue with url " << queueURL <<
                  std::endl;
    }
    else {
        std::cerr << "Error deleting queue " << queueURL << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/delete_queue.cpp).

## Info Selengkapnya
<a name="more-info"></a>
+  [Cara Kerja Antrian Amazon SQS di Panduan Pengembang Layanan Antrian](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html) Sederhana Amazon
+  [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [DeleteQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteQueues.html)di Referensi API Layanan Antrian Sederhana Amazon

# Mengirim, Menerima, dan Menghapus Pesan Amazon SQS
<a name="examples-sqs-messages"></a>

Pesan selalu dikirim menggunakan [antrean SQS](examples-sqs-message-queues.md). Contoh C\$1\$1 ini menunjukkan cara menggunakan pesan AWS SDK untuk C\$1\$1 untuk mengirim, menerima, dan menghapus pesan Amazon SQS dari antrian SQS.

## Prasyarat
<a name="codeExamplePrereq"></a>

Sebelum Anda mulai, kami sarankan Anda membaca [Memulai menggunakan AWS SDK untuk C\$1\$1](getting-started.md). 

Unduh kode contoh dan buat solusinya seperti yang dijelaskan dalam[Memulai contoh kode](getting-started-code-examples.md). 

Untuk menjalankan contoh, profil pengguna yang digunakan kode Anda untuk membuat permintaan harus memiliki izin yang tepat AWS (untuk layanan dan tindakan). Untuk informasi selengkapnya, lihat [Menyediakan AWS kredensi](credentials.md).

## Kirim Pesan
<a name="sqs-message-send"></a>

Anda dapat menambahkan satu pesan ke antrian Amazon SQS dengan memanggil fungsi anggota SQSClient kelas`SendMessage`. Anda menyediakan [SendMessageRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_send_message_request.html)objek yang `SendMessage` berisi [URL](examples-sqs-message-queues.md#sqs-get-queue-url) antrian, isi pesan, dan nilai penundaan opsional (dalam hitungan detik).

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/SendMessageRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::SendMessageRequest request;
    request.SetQueueUrl(queueUrl);
    request.SetMessageBody(messageBody);

    const Aws::SQS::Model::SendMessageOutcome outcome = sqsClient.SendMessage(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully sent message to " << queueUrl <<
                  std::endl;
    }
    else {
        std::cerr << "Error sending message to " << queueUrl << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/send_message.cpp).

## Menerima Pesan
<a name="sqs-messages-receive"></a>

Ambil pesan apa pun yang saat ini berada dalam antrian dengan memanggil fungsi `ReceiveMessage` anggota SQSClient kelas, meneruskannya URL antrian. Pesan dikembalikan sebagai daftar objek [Pesan](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_message.html).

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/ReceiveMessageRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::ReceiveMessageRequest request;
    request.SetQueueUrl(queueUrl);
    request.SetMaxNumberOfMessages(1);

    const Aws::SQS::Model::ReceiveMessageOutcome outcome = sqsClient.ReceiveMessage(
            request);
    if (outcome.IsSuccess()) {

        const Aws::Vector<Aws::SQS::Model::Message> &messages =
                outcome.GetResult().GetMessages();
        if (!messages.empty()) {
            const Aws::SQS::Model::Message &message = messages[0];
            std::cout << "Received message:" << std::endl;
            std::cout << "  MessageId: " << message.GetMessageId() << std::endl;
            std::cout << "  ReceiptHandle: " << message.GetReceiptHandle() << std::endl;
            std::cout << "  Body: " << message.GetBody() << std::endl << std::endl;
        }
        else {
            std::cout << "No messages received from queue " << queueUrl <<
                      std::endl;

        }
    }
    else {
        std::cerr << "Error receiving message from queue " << queueUrl << ": "
                  << outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/receive_message.cpp).

### Hapus Pesan setelah Diterima
<a name="sqs-messages-delete"></a>

Setelah menerima pesan dan memproses isinya, hapus pesan dari antrian dengan mengirimkan tanda terima pesan dan URL antrian ke fungsi `DeleteMessage` anggota SQSClient kelas.

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/DeleteMessageRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::Model::DeleteMessageRequest request;
    request.SetQueueUrl(queueUrl);
    request.SetReceiptHandle(messageReceiptHandle);

    const Aws::SQS::Model::DeleteMessageOutcome outcome = sqsClient.DeleteMessage(
            request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully deleted message from queue " << queueUrl
                  << std::endl;
    }
    else {
        std::cerr << "Error deleting message from queue " << queueUrl << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/receive_message.cpp).

## Info Selengkapnya
<a name="more-info"></a>
+  [Cara Kerja Antrian Amazon SQS di Panduan Pengembang Layanan Antrian](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html) Sederhana Amazon
+  [SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)di Referensi API Layanan Antrian Sederhana Amazon

# Mengaktifkan Polling Panjang untuk Antrian Pesan Amazon SQS
<a name="examples-sqs-long-polling"></a>

Amazon SQS menggunakan *polling singkat* secara default, hanya menanyakan subset server—berdasarkan distribusi acak berbobot—untuk menentukan apakah ada pesan yang tersedia untuk dimasukkan dalam respons.

Polling panjang membantu mengurangi biaya penggunaan Amazon SQS dengan mengurangi jumlah respons kosong saat tidak ada pesan yang tersedia untuk dikembalikan sebagai balasan atas permintaan ReceiveMessage yang dikirim ke antrian Amazon SQS dan menghilangkan respons kosong palsu. Anda dapat mengatur frekuensi polling yang panjang dari *1-20 detik*.

## Prasyarat
<a name="codeExamplePrereq"></a>

Sebelum Anda mulai, kami sarankan Anda membaca [Memulai menggunakan AWS SDK untuk C\$1\$1](getting-started.md). 

Unduh kode contoh dan buat solusinya seperti yang dijelaskan dalam[Memulai contoh kode](getting-started-code-examples.md). 

Untuk menjalankan contoh, profil pengguna yang digunakan kode Anda untuk membuat permintaan harus memiliki izin yang tepat AWS (untuk layanan dan tindakan). Untuk informasi selengkapnya, lihat [Menyediakan AWS kredensi](credentials.md).

## Aktifkan Polling Panjang saat Membuat Antrian
<a name="sqs-long-polling-create-queue"></a>

Untuk mengaktifkan polling panjang saat membuat antrean Amazon SQS, setel atribut `ReceiveMessageWaitTimeSeconds` pada [CreateQueueRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_create_queue_request.html)objek sebelum memanggil SQSClient fungsi anggota kelas. `CreateQueue`

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/CreateQueueRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::CreateQueueRequest request;
    request.SetQueueName(queueName);
    request.AddAttributes(
            Aws::SQS::Model::QueueAttributeName::ReceiveMessageWaitTimeSeconds,
            pollTimeSeconds);

    const Aws::SQS::Model::CreateQueueOutcome outcome = sqsClient.CreateQueue(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully created queue " << queueName <<
                  std::endl;
    }
    else {
        std::cout << "Error creating queue " << queueName << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/long_polling_on_create_queue.cpp).

## Aktifkan Polling Panjang pada Antrian yang Ada
<a name="sqs-long-polling-existing-queue"></a>

Selain mengaktifkan polling panjang saat membuat antrian, Anda juga dapat mengaktifkannya pada antrian yang ada dengan menyetel `ReceiveMessageWaitTimeSeconds` [SetQueueAttributesRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_set_queue_attributes_request.html)sebelum memanggil fungsi anggota kelas. SQSClient `SetQueueAttributes`

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/SetQueueAttributesRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::SetQueueAttributesRequest request;
    request.SetQueueUrl(queueURL);
    request.AddAttributes(
            Aws::SQS::Model::QueueAttributeName::ReceiveMessageWaitTimeSeconds,
            pollTimeSeconds);

    const Aws::SQS::Model::SetQueueAttributesOutcome outcome = sqsClient.SetQueueAttributes(
            request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully updated long polling time for queue " <<
                  queueURL << " to " << pollTimeSeconds << std::endl;
    }
    else {
        std::cout << "Error updating long polling time for queue " <<
                  queueURL << ": " << outcome.GetError().GetMessage() <<
                  std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/long_polling_on_existing_queue.cpp).

## Aktifkan Polling Panjang pada Tanda Terima Pesan
<a name="sqs-long-polling-receive-message"></a>

Anda dapat mengaktifkan polling panjang saat menerima pesan dengan menyetel waktu tunggu dalam hitungan detik pada [ReceiveMessageRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_receive_message_request.html)yang Anda berikan ke fungsi SQSClient ReceiveMessage anggota kelas.

**catatan**  
Anda harus memastikan bahwa batas waktu permintaan AWS klien lebih besar dari waktu polling maksimum yang panjang (20-an) sehingga `ReceiveMessage` permintaan Anda tidak habis saat menunggu acara jajak pendapat berikutnya\$1

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/ReceiveMessageRequest.h>
```

 **Kode** 

```
    Aws::SQS::SQSClient sqsClient(customConfiguration);

    Aws::SQS::Model::ReceiveMessageRequest request;
    request.SetQueueUrl(queueUrl);
    request.SetMaxNumberOfMessages(1);
    request.SetWaitTimeSeconds(waitTimeSeconds);

    auto outcome = sqsClient.ReceiveMessage(request);
    if (outcome.IsSuccess()) {
        const auto &messages = outcome.GetResult().GetMessages();
        if (messages.empty()) {
            std::cout << "No messages received from queue " << queueUrl <<
                      std::endl;
        }
        else {
            const auto &message = messages[0];
            std::cout << "Received message:" << std::endl;
            std::cout << "  MessageId: " << message.GetMessageId() << std::endl;
            std::cout << "  ReceiptHandle: " << message.GetReceiptHandle() << std::endl;
            std::cout << "  Body: " << message.GetBody() << std::endl << std::endl;
        }
    }
    else {
        std::cout << "Error receiving message from queue " << queueUrl << ": "
                  << outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/long_polling_on_message_receipt.cpp).

## Info Selengkapnya
<a name="more-info"></a>
+  [Polling Panjang Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html) dalam Panduan Pengembang Layanan Antrian Sederhana Amazon
+  [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)di Referensi API Layanan Antrian Sederhana Amazon

# Menyetel Batas Waktu Visibilitas di Amazon SQS
<a name="examples-sqs-visibility-timeout"></a>

Saat pesan diterima di Amazon SQS, pesan tetap berada di antrian hingga dihapus untuk memastikan tanda terima. Pesan yang diterima, tetapi tidak dihapus, akan tersedia dalam permintaan berikutnya setelah *batas waktu visibilitas* tertentu untuk membantu mencegah pesan diterima lebih dari satu kali sebelum dapat diproses dan dihapus.

Saat menggunakan [antrian standar](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues.html), batas waktu visibilitas bukanlah jaminan untuk menerima pesan dua kali. Jika Anda menggunakan antrian standar, pastikan kode Anda dapat menangani kasus di mana pesan yang sama telah dikirim lebih dari sekali.

## Prasyarat
<a name="codeExamplePrereq"></a>

Sebelum Anda mulai, kami sarankan Anda membaca [Memulai menggunakan AWS SDK untuk C\$1\$1](getting-started.md). 

Unduh kode contoh dan buat solusinya seperti yang dijelaskan dalam[Memulai contoh kode](getting-started-code-examples.md). 

Untuk menjalankan contoh, profil pengguna yang digunakan kode Anda untuk membuat permintaan harus memiliki izin yang tepat AWS (untuk layanan dan tindakan). Untuk informasi selengkapnya, lihat [Menyediakan AWS kredensil](credentials.md).

## Mengatur Batas Waktu Visibilitas Pesan pada Tanda Terima Pesan
<a name="sqs-visibility-timeout-receipt"></a>

Ketika Anda telah menerima pesan, Anda dapat mengubah batas waktu visibilitasnya dengan meneruskan pegangan tanda terima di bagian [ChangeMessageVisibilityRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_change_message_visibility_request.html)yang Anda berikan ke fungsi SQSClient anggota kelas`ChangeMessageVisibility`.

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/ChangeMessageVisibilityRequest.h>
#include <aws/sqs/model/ReceiveMessageRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::Model::ChangeMessageVisibilityRequest request;
    request.SetQueueUrl(queue_url);
    request.SetReceiptHandle(messageReceiptHandle);
    request.SetVisibilityTimeout(visibilityTimeoutSeconds);

    auto outcome = sqsClient.ChangeMessageVisibility(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully changed visibility of message " <<
                  messageReceiptHandle << " from queue " << queue_url << std::endl;
    }
    else {
        std::cout << "Error changing visibility of message from queue "
                  << queue_url << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/change_message_visibility.cpp).

## Info Selengkapnya
<a name="more-info"></a>
+  Batas [Waktu Visibilitas](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) dalam Panduan Pengembang Layanan Antrian Sederhana Amazon
+  [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [ChangeMessageVisibility](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html)di Referensi API Layanan Antrian Sederhana Amazon
+  [ChangeMessageVisibilityBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibilityBatch.html)di Referensi API Layanan Antrian Sederhana Amazon

# Menggunakan Antrian Surat Mati di Amazon SQS
<a name="examples-sqs-dead-letter-queues"></a>

Amazon SQS menyediakan dukungan untuk antrian *surat mati*. Antrian surat mati adalah antrian yang dapat ditargetkan antrian lain untuk pesan yang tidak dapat diproses dengan sukses. Anda dapat menyisihkan dan mengisolasi pesan-pesan ini dalam antrian surat mati untuk menentukan mengapa pemrosesan mereka tidak berhasil.

Untuk membuat antrean huruf mati, Anda harus terlebih dahulu membuat *kebijakan redrive*, lalu menyetel kebijakan dalam atribut antrian.

**penting**  
Antrian huruf mati harus jenis antrian yang sama (FIFO atau standar) dengan antrian sumber. Itu juga harus dibuat menggunakan yang sama Akun AWS dan Wilayah AWS sebagai antrian sumber.

## Prasyarat
<a name="codeExamplePrereq"></a>

Sebelum Anda mulai, kami sarankan Anda membaca [Memulai menggunakan AWS SDK untuk C\$1\$1](getting-started.md). 

Unduh kode contoh dan buat solusinya seperti yang dijelaskan dalam[Memulai contoh kode](getting-started-code-examples.md). 

Untuk menjalankan contoh, profil pengguna yang digunakan kode Anda untuk membuat permintaan harus memiliki izin yang tepat AWS (untuk layanan dan tindakan). Untuk informasi selengkapnya, lihat [Menyediakan AWS kredensi](credentials.md).

## Buat Kebijakan Penggerak Ulang
<a name="sqs-dead-letter-queue-create-redrive-policy"></a>

Kebijakan redrive ditentukan dalam JSON. Untuk membuatnya, Anda dapat menggunakan kelas utilitas JSON yang disediakan dengan. AWS SDK untuk C\$1\$1

Berikut adalah contoh fungsi yang membuat kebijakan redrive dengan menyediakannya dengan ARN antrian surat mati Anda dan jumlah maksimum kali pesan dapat diterima dan tidak diproses sebelum dikirim ke antrian surat mati.

 **Termasuk** 

```
#include <aws/core/Aws.h>
#include <aws/core/utils/json/JsonSerializer.h>
```

 **Kode** 

```
Aws::String MakeRedrivePolicy(const Aws::String &queueArn, int maxReceiveCount) {
    Aws::Utils::Json::JsonValue redrive_arn_entry;
    redrive_arn_entry.AsString(queueArn);

    Aws::Utils::Json::JsonValue max_msg_entry;
    max_msg_entry.AsInteger(maxReceiveCount);

    Aws::Utils::Json::JsonValue policy_map;
    policy_map.WithObject("deadLetterTargetArn", redrive_arn_entry);
    policy_map.WithObject("maxReceiveCount", max_msg_entry);

    return policy_map.View().WriteReadable();
}
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/dead_letter_queue.cpp).

## Mengatur Kebijakan Remrive pada Antrian Sumber
<a name="sqs-dead-letter-queue-set-redrive-policy"></a>

Untuk menyelesaikan pengaturan antrian huruf mati Anda, panggil fungsi SQSClient `SetQueueAttributes` anggota kelas dengan [SetQueueAttributesRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_set_queue_attributes_request.html)objek yang telah Anda atur `RedrivePolicy` atributnya dengan kebijakan redrive JSON Anda.

 **Termasuk** 

```
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/SetQueueAttributesRequest.h>
#include <iostream>
```

 **Kode** 

```
    Aws::SQS::Model::SetQueueAttributesRequest request;
    request.SetQueueUrl(srcQueueUrl);
    request.AddAttributes(
            Aws::SQS::Model::QueueAttributeName::RedrivePolicy,
            redrivePolicy);

    const Aws::SQS::Model::SetQueueAttributesOutcome outcome =
            sqsClient.SetQueueAttributes(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully set dead letter queue for queue  " <<
                  srcQueueUrl << " to " << deadLetterQueueARN << std::endl;
    }
    else {
        std::cerr << "Error setting dead letter queue for queue " <<
                  srcQueueUrl << ": " << outcome.GetError().GetMessage() <<
                  std::endl;
    }
```

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/dead_letter_queue.cpp).

## Info Selengkapnya
<a name="more-info"></a>
+  [Menggunakan Antrian Surat Mati Amazon SQS di Panduan Pengembang Layanan Antrian](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) Sederhana Amazon
+  [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)di Referensi API Layanan Antrian Sederhana Amazon