All Products
Search
Document Center

Simple Message Queue (formerly MNS):Mengelola antrian

Last Updated:Aug 28, 2025

Artikel ini menjelaskan cara menggunakan SDK untuk PHP untuk membuat antrian, mengirim pesan, menerima dan menghapus pesan, serta menghapus antrian.

Langkah 1: Siapkan lingkungan

  1. Unduh versi terbaru SDK untuk C#, ekstrak paket tersebut, lalu tambahkan folder ke Visual Studio sebagai sebuah solusi.

  2. Solusi tersebut mencakup empat proyek. Klik kanan pada proyek AliyunSDK_MNS dan pilih Rebuild. File Aliyun.MNS.dll akan dihasilkan di direktori bin proyek.

    Catatan

    Tentukan file Aliyun.MNS.dll sebagai referensi untuk proyek lainnya.

  3. Untuk melihat contoh kode yang dapat digunakan untuk mengelola antrian, buka file SyncTopicSample.cs di proyek AliyunSDK_MNS_Sample.

    1. Terapkan AliyunSDK_MNS_Sample sebagai proyek startup dan SyncTopicSample sebagai objek startup.

    2. Buka file SyncTopicSample.cs dan tentukan AccessKey ID, AccessKey secret, dan endpoint di awal file.

      • AccessKey ID dan AccessKey Secret

        • Pasangan AccessKey yang digunakan untuk memanggil operasi API di Alibaba Cloud.

        • Jika Anda menggunakan akun Alibaba Cloud, buka halaman Manajemen AccessKey di Konsol Manajemen Alibaba Cloud untuk membuat dan melihat pasangan AccessKey Anda.

        • Jika Anda adalah Pengguna Resource Access Management (RAM), masuk ke Konsol RAM untuk melihat pasangan AccessKey Anda.

      • Endpoint

        • Endpoint yang digunakan untuk mengakses Simple Message Queue (sebelumnya MNS). Untuk melihat endpoint dari SMQ, masuk ke SMQ console. Untuk informasi lebih lanjut, lihat Endpoint dari sebuah antrian.

        • Endpoint SMQ bervariasi berdasarkan wilayah.

Langkah 2: Membuat antrian

Jika tidak ada antrian yang tersedia, Anda harus membuat antrian. Nama default untuk antrian baru adalah myqueue. Anda juga dapat menentukan nama antrian lainnya.

// 1.Anda dapat menentukan parameter antrian sesuai dengan kebutuhan Anda. Untuk informasi lebih lanjut tentang parameter antrian, lihat Antrian. 
var createQueueRequest = new CreateQueueRequest
{
    QueueName = _queueName,
    Attributes =
    {
        // Anda harus menentukan parameter VisibilityTimeout. Nilai default: 30. 
        VisibilityTimeout = 30,
        MaximumMessageSize = 40960,
        MessageRetentionPeriod = 345600,
        // Parameter PollingWaitSeconds menentukan periode timeout permintaan polling panjang. 
        PollingWaitSeconds = 30
    }
};

try
{
    // 2.Buat antrian. Jika Anda tidak perlu menentukan parameter antrian, Anda dapat menggunakan metode client.CreateQueue(_ queueName) untuk membuat antrian. 
    var queue = client.CreateQueue(createQueueRequest);
    Console.WriteLine("Antrian berhasil dibuat, nama antrian: {0}", queue.QueueName);
}
catch (MNSException me)
{
    // 3.Antrian mungkin gagal dibuat jika terjadi kesalahan jaringan atau nama antrian sudah ada. Anda dapat memanggil operasi CatchException untuk mengidentifikasi dan menyelesaikan kegagalan. 
    Console.WriteLine("Pembuatan Antrian Gagal! Kode Kesalahan: " + me.ErrorCode);
}
catch (Exception ex)
{
    Console.WriteLine("Pembuatan antrian gagal, info pengecualian: " + ex.Message);
}           

Langkah 3: Kirim pesan

Setelah antrian dibuat, Anda dapat mengirim pesan ke antrian.

try
{
    // 1.Ambil antrian. 
    var nativeQueue = client.GetNativeQueue(_queueName);
    // 2.Buat permintaan untuk mengirim pesan. Anda dapat menentukan parameter pesan sesuai dengan kebutuhan Anda. 
    var sendMessageRequest = new SendMessageRequest("Alibaba<MessageBody>Cloud");
    // 3.Kirim pesan. Jika Anda tidak perlu menentukan parameter pesan, Anda dapat menggunakan metode nativeQueue.SendMessage ("MessageBody"). 
    var sendMessageResponse = nativeQueue.SendMessage(sendMessageRequest);
    Console.WriteLine("Pesan berhasil dikirim“);
}
catch (MNSException me)
{
    // 4.Antrian mungkin gagal dibuat jika terjadi kesalahan jaringan atau nama antrian sudah ada. Anda dapat memanggil operasi CatchException untuk mengidentifikasi dan menyelesaikan kegagalan. 
    Console.WriteLine("SendMessage Gagal! Kode Kesalahan: " + me.ErrorCode);
}
catch (Exception ex)
{
    Console.WriteLine("Pengiriman pesan gagal, info pengecualian: " + ex.Message);
}            

Langkah 4: Menerima dan menghapus pesan

Jika pesan ada dalam antrian, Anda dapat menerima pesan tersebut.

Anda harus menentukan parameter NextVisibleTime di SMQ. Untuk informasi lebih lanjut, lihat QueueMessage.

try
{
    // 1.Panggil fungsi receiveMessage(). 
    // Kami merekomendasikan Anda mengatur parameter WaitSeconds menjadi 30 saat memanggil fungsi receiveMessage(). 
    // Jika Anda mengatur parameter WaitSeconds menjadi nilai non-nol, permintaan penerimaan pesan adalah permintaan polling panjang HTTP. Permintaan polling panjang ini bertahan hingga pesan tersedia di antrian. Nilai maksimum parameter WaitSeconds adalah 30. 
    var receiveMessageResponse = nativeQueue.ReceiveMessage(30);
    // 2.Ambil nilai parameter ReceiptHandle. Tanda terima pesan memiliki periode validitas dan dapat digunakan untuk memodifikasi atau menghapus pesan. Untuk informasi lebih lanjut, lihat QueueMessage. 
    _receiptHandle = message.ReceiptHandle;
}
catch (MNSException me)
{
    // 3.Pesan mungkin gagal diterima jika terjadi kesalahan. Anda dapat memanggil operasi CatchException untuk mengidentifikasi dan menyelesaikan kegagalan. 
    Console.WriteLine("ReceiveMessage Gagal! Kode Kesalahan: " + me.ErrorCode);
}
catch (Exception ex)
{
    Console.WriteLine("ReceiveMessage gagal, info pengecualian: " + ex.Message);
}

// Tentukan logika Anda sendiri untuk memproses pesan sesuai dengan kebutuhan Anda. 
// Parameter VisibilityTimeout menentukan periode ketika pesan tetap dalam status Inactive di antrian setelah pesan dikonsumsi oleh klien. Setelah periode yang ditentukan, pesan berubah ke status Aktif lagi dan dapat dikonsumsi oleh klien lain. Ini mencegah hilangnya pesan terhadap keluar tak terduga. 

// 4.Setelah pesan dikonsumsi, Anda dapat menghapus pesan dari antrian. 
try
{
    // 5.Panggil fungsi deleteMessage(). 
    var deleteMessageResponse = nativeQueue.DeleteMessage(_receiptHandle);
}
catch (MNSException me)
{
    // 6.Jika terjadi kesalahan, Anda dapat memanggil operasi CatchException untuk mengidentifikasi dan menyelesaikan kegagalan. 
    // Jika tanda terima kedaluwarsa, kesalahan MessageNotExist dikembalikan. Kesalahan ini menunjukkan bahwa Anda tidak dapat menggunakan tanda terima untuk menemukan pesan yang sesuai. 
    // Untuk memastikan bahwa Anda dapat mengonsumsi pesan sebelum tanda terima kedaluwarsa, Anda harus mengatur parameter VisibilityTimeout ke nilai yang sesuai. Anda dapat memanggil fungsi changeMessageVisibility() untuk memodifikasi nilai parameter VisibilityTimeout. 
    Console.WriteLine("DeleteMessage Gagal! Kode Kesalahan: " + me.ErrorCode);
}
catch (Exception ex)
{
    Console.WriteLine("Penghapusan pesan gagal, info pengecualian: " + ex.Message);
}            

Langkah 5: Hapus antrian

Anda dapat menggunakan kode sampel berikut untuk menghapus antrian:

try 
{
    var deleteQueueResponse = client.DeleteQueue(deleteQueueRequest);
} 
catch (MNSException me)
{
    Console.WriteLine("DeleteQueue Gagal! Kode Kesalahan: " + me.ErrorCode);
}
catch (Exception ex)
{
    Console.WriteLine("Penghapusan antrian gagal, info pengecualian: " + ex.Message);
}