

Versi 4 (V4) dari AWS SDK untuk .NET telah dirilis\$1

Untuk informasi tentang melanggar perubahan dan memigrasi aplikasi Anda, lihat [topik migrasi](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html).

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# Menerima pesan Amazon SQS
<a name="ReceiveMessage"></a>

[Contoh ini menunjukkan cara menggunakan AWS SDK untuk .NET untuk menerima pesan dari antrean Amazon SQS, yang dapat Anda buat [secara terprogram atau menggunakan konsol](CreateQueue.md) Amazon SQS.](https://console.aws.amazon.com/sqs) Aplikasi membaca satu pesan dari antrian, memproses pesan (dalam hal ini, menampilkan badan pesan di konsol), dan kemudian menghapus pesan dari antrian. Aplikasi mengulangi langkah-langkah ini sampai pengguna mengetik tombol pada keyboard.

Contoh ini dan [contoh sebelumnya tentang mengirim pesan](SendMessage.md) dapat digunakan bersama untuk melihat aliran pesan di Amazon SQS.

Bagian berikut menyediakan cuplikan dari contoh ini. [Kode lengkap untuk contoh](#ReceiveMessage-complete-code) ditampilkan setelah itu, dan dapat dibangun dan dijalankan apa adanya.

**Topics**
+ [Menerima pesan](#ReceiveMessage-receive)
+ [Menghapus pesan](#ReceiveMessage-delete)
+ [Kode lengkap](#ReceiveMessage-complete-code)
+ [Pertimbangan tambahan](#ReceiveMessage-additional)

## Menerima pesan
<a name="ReceiveMessage-receive"></a>

Cuplikan berikut menerima pesan dari antrian yang diidentifikasi oleh URL antrian yang diberikan.

Contoh [di akhir topik ini](#ReceiveMessage-complete-code) menunjukkan cuplikan ini digunakan.

```
    //
    // Method to read a message from the given queue
    // In this example, it gets one message at a time
    private static async Task<ReceiveMessageResponse> GetMessage(
      IAmazonSQS sqsClient, string qUrl, int waitTime=0)
    {
      return await sqsClient.ReceiveMessageAsync(new ReceiveMessageRequest{
        QueueUrl=qUrl,
        MaxNumberOfMessages=MaxMessages,
        WaitTimeSeconds=waitTime
        // (Could also request attributes, set visibility timeout, etc.)
      });
    }
```

## Menghapus pesan
<a name="ReceiveMessage-delete"></a>

Cuplikan berikut menghapus pesan dari antrian yang diidentifikasi oleh URL antrian yang diberikan.

Contoh [di akhir topik ini](#ReceiveMessage-complete-code) menunjukkan cuplikan ini digunakan.

```
    //
    // Method to delete a message from a queue
    private static async Task DeleteMessage(
      IAmazonSQS sqsClient, Message message, string qUrl)
    {
      Console.WriteLine($"\nDeleting message {message.MessageId} from queue...");
      await sqsClient.DeleteMessageAsync(qUrl, message.ReceiptHandle);
    }
```

## Kode lengkap
<a name="ReceiveMessage-complete-code"></a>

Bagian ini menunjukkan referensi yang relevan dan kode lengkap untuk contoh ini.

### Referensi SDK
<a name="w2aac19c15c29c25c21b5b1"></a>

NuGet paket:
+ [AWSSDK.SQS](https://www.nuget.org/packages/AWSSDK.SQS)

Elemen pemrograman:
+ [Namespace Amazon.sqs](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SQS/NSQS.html)

  Kelas [Amazon SQSClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SQS/TSQSClient.html)
+ [Namespace Amazon.sqs.Model](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SQS/NSQSModel.html)

  Kelas [ReceiveMessageRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SQS/TReceiveMessageRequest.html)

  Kelas [ReceiveMessageResponse](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SQS/TReceiveMessageResponse.html)

### Kodenya
<a name="w2aac19c15c29c25c21b7b1"></a>

```
using System;
using System.Threading.Tasks;
using Amazon.SQS;
using Amazon.SQS.Model;

namespace SQSReceiveMessages
{
  class Program
  {
    private const int MaxMessages = 1;
    private const int WaitTime = 2;
    static async Task Main(string[] args)
    {
      // Do some checks on the command-line
      if(args.Length == 0)
      {
        Console.WriteLine("\nUsage: SQSReceiveMessages queue_url");
        Console.WriteLine("   queue_url - The URL of an existing SQS queue.");
        return;
      }
      if(!args[0].StartsWith("https://sqs."))
      {
        Console.WriteLine("\nThe command-line argument isn't a queue URL:");
        Console.WriteLine($"{args[0]}");
        return;
      }

      // Create the Amazon SQS client
      var sqsClient = new AmazonSQSClient();

      // (could verify that the queue exists)
      // Read messages from the queue and perform appropriate actions
      Console.WriteLine($"Reading messages from queue\n  {args[0]}");
      Console.WriteLine("Press any key to stop. (Response might be slightly delayed.)");
      do
      {
        var msg = await GetMessage(sqsClient, args[0], WaitTime);
        if(msg.Messages.Count != 0)
        {
          if(ProcessMessage(msg.Messages[0]))
            await DeleteMessage(sqsClient, msg.Messages[0], args[0]);
        }
      } while(!Console.KeyAvailable);
    }


    //
    // Method to read a message from the given queue
    // In this example, it gets one message at a time
    private static async Task<ReceiveMessageResponse> GetMessage(
      IAmazonSQS sqsClient, string qUrl, int waitTime=0)
    {
      return await sqsClient.ReceiveMessageAsync(new ReceiveMessageRequest{
        QueueUrl=qUrl,
        MaxNumberOfMessages=MaxMessages,
        WaitTimeSeconds=waitTime
        // (Could also request attributes, set visibility timeout, etc.)
      });
    }


    //
    // Method to process a message
    // In this example, it simply prints the message
    private static bool ProcessMessage(Message message)
    {
      Console.WriteLine($"\nMessage body of {message.MessageId}:");
      Console.WriteLine($"{message.Body}");
      return true;
    }


    //
    // Method to delete a message from a queue
    private static async Task DeleteMessage(
      IAmazonSQS sqsClient, Message message, string qUrl)
    {
      Console.WriteLine($"\nDeleting message {message.MessageId} from queue...");
      await sqsClient.DeleteMessageAsync(qUrl, message.ReceiptHandle);
    }
  }
}
```

## Pertimbangan tambahan
<a name="ReceiveMessage-additional"></a>
+ Untuk menentukan polling panjang, contoh ini menggunakan `WaitTimeSeconds` properti untuk setiap panggilan ke `ReceiveMessageAsync` metode.

  Anda juga dapat menentukan polling panjang untuk semua pesan pada antrian dengan menggunakan `ReceiveMessageWaitTimeSeconds` atribut saat [membuat](CreateQueue.md) atau [memperbarui](UpdateSqsQueue.md) antrian.

  Untuk informasi tentang polling singkat versus polling panjang, lihat Pemungutan suara [pendek dan panjang di Panduan](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html) Pengembang Layanan *Antrian Sederhana Amazon*.
+ Selama pemrosesan pesan, Anda dapat menggunakan tanda terima untuk mengubah batas waktu visibilitas pesan. Untuk informasi tentang cara melakukannya, lihat `ChangeMessageVisibilityAsync` metode SQSClient kelas [Amazon](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SQS/TSQSClient.html).
+ Memanggil `DeleteMessageAsync` metode tanpa syarat akan menghapus pesan dari antrian, terlepas dari pengaturan batas waktu visibilitas.