All Products
Search
Document Center

Simple Message Queue (formerly MNS):Protokol permintaan

Last Updated:May 08, 2026

Dokumen ini menjelaskan struktur permintaan, parameter umum, respons, dan metode penandatanganan untuk panggilan API HTTP ke Simple Message Queue (SMQ, formerly MNS).

Request structure

Endpoint

Simple Message Queue (SMQ, formerly MNS) tersedia di beberapa wilayah. Setiap wilayah menyediakan titik akhir publik dan internal. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.

Request method

Anda dapat mengirim permintaan ke Simple Message Queue (SMQ, formerly MNS) melalui HTTP dengan menggunakan metode seperti PUT, POST, GET, dan DELETE.

Permintaan harus mencakup parameter, header, dan badan yang sesuai. Baik permintaan maupun respons dikodekan dalam UTF-8.

Common parameters

Common request headers

Parameter

Wajib

Deskripsi

Authorization

Ya

String autentikasi. Untuk informasi selengkapnya, lihat Metode penandatanganan permintaan.

Content-Length

Ya

Panjang badan permintaan HTTP.

Content-Type

Ya

Tipe MIME dari konten permintaan. Saat ini, hanya format teks dan XML yang didukung.

Content-MD5

Tidak

Hash MD5 dari badan permintaan HTTP. Untuk informasi selengkapnya, lihat The Content-MD5 Header Field.

Catatan

Header Content-MD5 bersifat opsional. Sebagian besar operasi API, seperti SendMessage dan ReceiveMessage, tidak memerlukan header ini. Jika Anda tidak menyetel header Content-MD5, gunakan string kosong untuk bidang CONTENT-MD5 saat menyusun string-to-sign.

Date

Ya

Waktu saat permintaan dibuat. Waktu harus dalam format GMT. Jika selisih waktu antara permintaan dan waktu server SMQ melebihi 15 menit, permintaan dianggap tidak valid.

Host

Wajib untuk HTTP/1.1. Opsional untuk HTTP/1.0.

Titik akhir permintaan. Formatnya adalah $AccountId.mns.cn-hangzhou.aliyuncs.com. Dapatkan AccountId Anda dari website Alibaba Cloud. Temukan titik akhir SMQ yang sesuai untuk wilayah Anda di dokumentasi API.

x-mns-version

Ya

Versi API SMQ yang digunakan. Versi saat ini adalah 2015-06-06.

x-mns-date

Tidak

Alternatif untuk header Date. Gunakan header ini jika lingkungan client atau browser Anda mencegah Anda menyetel header Date standar.

Common response headers

Parameter

Deskripsi

Content-Length

Panjang badan respons HTTP.

Connection

Status koneksi HTTP.

Date

Waktu respons dihasilkan, dalam format GMT.

Server

Nama server SMQ yang menangani permintaan.

x-mns-request-id

ID unik untuk permintaan tersebut.

x-mns-version

Versi API SMQ. Versi saat ini adalah 2015-06-06.

Response

Panggilan API mengembalikan data dalam format standar. Kode status HTTP dalam rentang 2xx menunjukkan keberhasilan panggilan, sedangkan kode status dalam rentang 4xx atau 5xx menunjukkan kegagalan. Respons yang berhasil berada dalam format XML.

Respons XML mencakup informasi keberhasilan dan data bisnis spesifik. Contoh berikut menunjukkan struktur dasarnya:

    <?xml version="1.0" encoding="utf-8"?> 
    <!--Root node of the result--> 
    <RootNode xmlns="http://mns.aliyuncs.com/doc/v1/">
    <!--Returned child node-->
    </RootNode>

Jika panggilan API gagal, tidak ada data hasil yang dikembalikan. Sebagai gantinya, layanan mengembalikan kode status HTTP 4xx atau 5xx. Badan respons berisi kode kesalahan dan pesan spesifik, serta mencakup ID permintaan unik secara global (RequestId) dan ID host (HostId) dari server yang menangani permintaan Anda.

Untuk informasi kesalahan lebih rinci, lihat Kode kesalahan.

Request signature method

Overview

Layanan Simple Message Queue (SMQ, formerly MNS) mengotentikasi setiap permintaan. Setiap permintaan yang Anda kirim ke SMQ harus menyertakan tanda tangan di headernya. SDK SMQ secara otomatis menangani proses penandatanganan. Kami menyarankan Anda menggunakan SDK untuk mengirim permintaan guna menghindari penandatanganan manual.

Proses penandatanganan terdiri dari langkah-langkah berikut:

Step 1: Construct the string-to-sign

Gunakan pseudokode berikut untuk menyusun string-to-sign:

StringToSign = HttpMethod + "\n" 
         + CONTENT-MD5 + "\n"     
         + CONTENT-TYPE + "\n" 
         + DATE + "\n" 
         + CanonicalizedMNSHeaders
         + CanonicalizedResource;

Parameter

Deskripsi

HttpMethod

Metode permintaan HTTP dalam huruf kapital. Contoh: PUT, GET, POST, DELETE.

Content-Md5

Hash MD5 dari badan permintaan. Ini bersifat opsional. Jika header Content-MD5 tidak disertakan dalam permintaan, gunakan string kosong di sini.

CONTENT-TYPE

Tipe konten dari badan permintaan. Jika header Content-Type tidak disertakan dalam permintaan, gunakan string kosong di sini.

DATE

Tanggal dan waktu permintaan.

  • Formatnya adalah: Thu, 07 Mar 2012 18:49:58 GMT. Jika Anda menggunakan x-mns-date untuk menggantikan DATE, DATE tidak boleh kosong dan harus diatur ke nilai x-mns-date.

  • Bidang ini tidak boleh kosong. Hanya format GMT yang didukung.

  • Jika selisih waktu antara permintaan dan waktu server Simple Message Queue (SMQ, formerly MNS) melebihi 15 menit, layanan menganggap permintaan tidak valid dan mengembalikan kode kesalahan 400. Untuk informasi selengkapnya, lihat Kode kesalahan.

CanonicalizedMNSHeaders

Konkatenasi semua header HTTP yang diawali dengan awalan x-mns-. Header-header ini harus diproses sebagai berikut:

  • Kunci header harus diubah menjadi huruf kecil.

  • Header harus diurutkan secara alfabetis berdasarkan kunci.

  • Konkatenasi header seperti yang ditunjukkan pada pseudokode berikut.

    // Original request headers
    Map<String, String> httpHeaders = request.getHeaders();
    // Sort keys and convert to lowercase
    sortHeadersKeyAndToLowerCase(httpHeaders);
    // Concatenate
    Set<String> keySet = httpHeaders.keySet();
    for (String key : keySet) {
        if (key.startsWith("x-mns-")) {
            CanonicalizedMNSHeaders.append(key).append(":")
                .append(httpHeaders.get(key)).append("\n");
        }
    }

CanonicalizedResource

URI dari resource yang diminta HTTP adalah bagian dari alamat titik akhir HTTP yang ditentukan dalam konfigurasi langganan, tidak termasuk nama domain dan port. Misalnya, jika alamat titik akhir yang dikonfigurasi adalah http://123.123.XX.XX:8080/api/test?code=200, URI-nya adalah /api/test?code=200. Jika alamat titik akhir adalah http://www.aliyun.com/mns/help, URI-nya adalah /mns/help.

Penting

Jika sistem Anda mencakup gerbang atau proxy lain, URI pada titik verifikasi mungkin berbeda dari yang ada dalam konfigurasi langganan Anda. Dalam kasus ini, Anda harus menggunakan URI dari konfigurasi langganan.

Step 2: Calculate the signature

Signature = Base64( HMAC-SHA1( ${AccessSecret}, UTF-8-Encoding-Of(${StringToSign})) ) 

Parameter tersebut dijelaskan sebagai berikut:

Parameter

Deskripsi

Base64

Metode encoding Base64.

HMAC-SHA1

Algoritma penandatanganan. SMQ menggunakan metode HMAC-SHA1 yang didefinisikan dalam RFC 2104.

AccessKey secret

Rahasia AccessKey Anda. Ini sesuai dengan ID AccessKey yang digunakan dalam tanda tangan.

UTF-8-Encoding-Of

Format encoding UTF-8.

StringToSign

String-to-sign yang disusun dalam Langkah 1: Susun string-to-sign.

Step 3: Add the signature to the request

addHeader("Authorization","MNS " +  ${AccessKeyId}+ ":" + ${Signature})

Kuncinya adalah string konstan Authorization. Nilainya adalah string yang disusun dengan menggabungkan variabel AccessKeyId dan Signature dalam format MNS ${accessKeyId}:${Signature}. Dalam format ini, Signature adalah tanda tangan khusus yang dibuat oleh Simple Message Queue (SMQ, formerly MNS), yaitu nilai yang dihasilkan dalam Langkah 2: Hitung tanda tangan (Signature).

Signature examples

Berikut ini adalah contoh permintaan:

PUT /queues/$queueName?metaOverride=true HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 08 Mar 2012 12:00:00 GMT
Authorization: MNS 15B4D3461F177624****:xQE0diMbL****f3YB+FIEXAMPLE=

<?xml version="1.0" encoding="UTF-8"  ?>
<Queue xmlns="http://mns.aliyuncs.com/doc/v1/">
<VisibilityTimeout >60</VisibilityTimeout>
<MaximumMessageSize>1024</MaximumMessageSize>
<MessageRetentionPeriod>120</MessageRetentionPeriod>
<DelaySeconds>30</DelaySeconds>
</Queue>       

Berikut ini adalah contoh respons:

Contoh 1

Layanan mengembalikan kesalahan 403 Forbidden jika ID AccessKey yang diberikan tidak ada atau tidak aktif.

Content-Type: text/xml
Content-Length: 314
Date: Wed, 18Mar 2012 08:04:06 GMT
x-mns-request-id: 512B2A634403E52B1956****

<?xml version="1.0" encoding="utf-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>AccessIDAuthError</Code>
<Message>
    AccessID authentication fail, please check your AccessID and retry.
</Message>
<RequestId>512B2A634403E52B1956****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error>       

Contoh 2

Layanan mengembalikan kesalahan 403 Forbidden jika header Date tidak ada atau memiliki format yang tidak valid.

Content-Type: text/xml
Content-Length: 274
Date: Wed, 18Mar 2012 08:04:06 GMT
x-mns-request-id: 512B2A634403E52B1956****

<?xml version="1.0" encoding="UTF-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>InvalidArgument</Code>
<Message>Date Header is invalid or missing.</Message>
<RequestId>7E1A5CF258F535884403****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error>         

Contoh 3

Permintaan harus tiba di server Simple Message Queue (SMQ, formerly MNS) dalam waktu 15 menit sejak stempel waktunya. Jika tidak, layanan mengembalikan kesalahan 408 Request Timeout.

Content-Type: text/xml
Content-Length: 283
Date: Wed, 11 May 2011 09:01:51 GMT
x-mns-request-id: 512B2A634403E52B1956****

<?xml version="1.0"  encoding="UTF-8"?>
<Error xmlns="http://mns.aliyuncs.com/doc/v1/">
<Code>TimeExpired</Code>
<Message>
        The http request you sent is expired.
</Message>
<RequestId>512B2A634403E52B1956****</RequestId>
<HostId>mns.cn-hangzhou.aliyuncs.com</HostId>
</Error>