Topik ini menyediakan contoh konsumsi pesan dalam berbagai bahasa pemrograman populer. Anda dapat mengunduh paket Software Development Kit (SDK) yang sesuai untuk menarik pesan dari antrian.
Panduan versi SDK
Alibaba Cloud Short Message Service menyediakan dua versi Software Development Kit (SDK): SDK V1.0 dan SDK V2.0. SDK V2.0 merupakan versi terbaru dan menyediakan fitur API yang setara dengan SDK V1.0. Dibandingkan dengan SDK V1.0, SDK V2.0 lebih andal, lebih mudah digunakan, serta mendukung lebih banyak bahasa pemrograman. SDK ini juga mengatasi masalah thread safety pada klien tunggal yang terdapat di SDK V1.0, sehingga memberikan pengalaman pengembang yang lebih baik.
SDK V1.0 tidak lagi dipelihara. Kami menyarankan Anda menggunakan SDK V2.0. Jika Anda masih menggunakan SDK V1.0, Anda harus meng-upgrade ke SDK V2.0.
Alamat unduhan SDK
SDK International SMS mendukung berbagai bahasa pemrograman. Anda dapat menemukan metode instalasi SDK di OpenAPI Portal atau melihat kode sumber dan panduan instalasi di GitHub. Kami menyarankan Anda menginstal SDK menggunakan alat manajemen dependensi standar untuk bahasa pemrograman yang Anda gunakan.
Bahasa | Metode instalasi SDK | Alamat GitHub | Quick Start |
Java | |||
Python | |||
PHP | |||
Go | |||
TypeScript | |||
C++ | / | ||
C# | |||
Swift | / |
Contoh penerimaan pesan
Sebelum memanggil API, Anda harus mengonfigurasi variabel lingkungan agar SDK dapat membaca kredensial akses Anda. Nama variabel lingkungan untuk ID AccessKey dan Rahasia AccessKey masing-masing adalah ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Untuk informasi selengkapnya tentang konfigurasi tersebut, lihat Langkah-langkah mengonfigurasi variabel lingkungan.
Demo Java
package com.alicom.mns.sample;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.alicom.mns.tools.inter.DefaultAlicomMessagePuller;
import com.alicom.mns.tools.inter.MessageListener;
import com.aliyun.mns.model.Message;
/**
* Ini adalah DEMO untuk konsumsi pesan Antrian MNS SMS
* MessageType: SmsReport
*/
public class ReceiveDemo {
static class MyMessageListener implements MessageListener {
@Override
public boolean dealMessage(Message message) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("waktu penerimaan pesan dari mns:" + format.format(new Date()));
System.out.println("handle pesan: " + message.getReceiptHandle());
System.out.println("isi pesan: " + message.getMessageBodyAsString());
System.out.println("ID pesan: " + message.getMessageId());
System.out.println("jumlah dequeue pesan:" + message.getDequeueCount());
System.out.println("Thread:" + Thread.currentThread().getName());
try {
//Silakan tambahkan kode Anda di sini
} catch (Throwable e) {
// Exception yang disebabkan oleh kode Anda sendiri. Pesan tidak akan dihapus dan dapat diambil kembali
return false;
}
// Pesan akan dihapus karena kesalahan format
return true;
}
}
public static void main(String[] args) {
DefaultAlicomMessagePuller puller = new DefaultAlicomMessagePuller();
//Atur ukuran thread asinkron
puller.setConsumeMinThreadSize(6);
puller.setConsumeMaxThreadSize(16);
puller.setThreadQueueSize(200);
puller.setPullMsgThreadSize(1);
//Hanya diaktifkan saat debugging, harus dinonaktifkan dalam status produksi
puller.openDebugLog(false);
String regionIdForPop = "ap-southeast-1";
String endpointNameForPop = "ap-southeast-1";
//Jika Anda mengirim permintaan SMS ke OpenAPI Wilayah Singapura (domain: dysmsapi.ap-southeast-1.aliyuncs.com)
//Silakan gunakan
String domainForPop = "dybaseapi.ap-southeast-1.aliyuncs.com";
String mnsAccountEndpoint = "http://1493622401794734.mns.ap-southeast-1.aliyuncs.com";
//Jika Anda mengirim permintaan SMS ke OpenAPI Wilayah Indonesia (Jakarta) (domain: dysmsapi.ap-southeast-5.aliyuncs.com)
//Silakan gunakan
//String domainForPop = "dybaseapi.ap-southeast-5.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.ap-southeast-5.aliyuncs.com";
//Jika Anda mengirim permintaan SMS ke OpenAPI Wilayah Jerman (Frankfurt) (domain: dysmsapi.eu-central-1.aliyuncs.com)
//String domainForPop = "dybaseapi.eu-central-1.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.eu-central-1.aliyuncs.com";
//Jika Anda mengirim permintaan SMS ke OpenAPI Wilayah AS Timur (Virginia) (domain: dysmsapi.us-east-1.aliyuncs.com)
//String domainForPop = "dybaseapi.us-east-1.aliyuncs.com";
//String mnsAccountEndpoint = "http://1493622401794734.mns.us-east-1.aliyuncs.com";
//AccessKey dan SecretKey dapat Anda peroleh dari Alibaba Cloud Console
String accessKeyId = "";
String accessKeySecret = "";
//SmsReport
String messageType = "SmsReport";
//Nama Antrian dapat Anda peroleh dari Alibaba Cloud Sms Console
//Pola: Alicom-Queue-{UID}-{messageType}
String queueName = "";
puller.startReceiveMsgForVPC(accessKeyId, accessKeySecret, messageType, queueName, regionIdForPop,
endpointNameForPop, domainForPop, mnsAccountEndpoint, new MyMessageListener());
//atau inisialisasi IAcsClient Anda sendiri (tanpa accessKeySecret)
//puller.startReceiveMsg(acsClient, messageType, queueName, new MyMessageListener(), mnsAccountEndpoint);
}
}
FAQ
Error "SSL: CERTIFICATE_VERIFY_FAILED" saat mengintegrasikan Python SDK di macOS
Mengapa exception "SSL: CERTIFICATE_VERIFY_FAILED" muncul saat mengintegrasikan Python SDK di macOS? Pesan error lengkapnya adalah `websocket closed due to [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)`.
Saat menghubungkan ke WebSocket, OpenSSL mungkin gagal mengautentikasi sertifikat server. Masalah ini biasanya terjadi karena sertifikat root yang diperlukan belum dikonfigurasi dengan benar di lingkungan Python Anda. Anda dapat menyelesaikan masalah ini secara manual dengan langkah-langkah berikut:
Ekspor sertifikat sistem dan atur variabel lingkungan: Jalankan perintah berikut untuk mengekspor semua sertifikat dari sistem macOS ke sebuah file. Kemudian, atur path ke file tersebut sebagai path sertifikat default untuk Python dan library terkait.
security find-certificate -a -p > ~/all_mac_certs.pem export SSL_CERT_FILE=~/all_mac_certs.pem export REQUESTS_CA_BUNDLE=~/all_mac_certs.pemBuat tautan simbolik untuk memperbaiki konfigurasi OpenSSL Python: Jika sertifikat tidak tersedia dalam konfigurasi OpenSSL Python, Anda dapat menjalankan perintah berikut untuk membuat tautan simbolik secara manual. Pastikan Anda mengganti path dalam perintah tersebut dengan path instalasi aktual versi Python lokal Anda.
# 3.9 hanyalah contoh nomor versi. Sesuaikan path berdasarkan versi Python yang terinstal di mesin lokal Anda. ln -s /etc/ssl/* /Library/Frameworks/Python.framework/Versions/3.9/etc/opensslMulai ulang terminal dan bersihkan cache: Setelah menyelesaikan langkah-langkah di atas, tutup dan buka kembali terminal agar variabel lingkungan diterapkan. Anda kemudian dapat membersihkan cache yang mungkin ada dan mencoba menghubungkan kembali ke WebSocket.
Langkah-langkah di atas dapat mengatasi masalah koneksi yang disebabkan oleh konfigurasi sertifikat yang salah. Jika masalah tetap berlanjut, periksa apakah konfigurasi sertifikat pada server tujuan sudah benar.