Topik ini menjelaskan cara membuat langganan sisi server Simple Message Queue (formerly MNS) (SMQ) untuk mendorong pesan tentang perubahan status perangkat di bawah suatu produk ke antrian MNS. Server Anda dapat menerima pesan tersebut dengan mendengarkan antrian MNS.
Prasyarat
Layanan Alibaba Cloud berikut telah diaktifkan:
Lingkungan pengembangan siap digunakan. Dalam contoh ini, lingkungan pengembangan Java berikut digunakan:
Sistem operasi: Windows 10 (64-bit)
Java Development Kit (JDK): JDK 8
Integrated development environment (IDE): IntelliJ IDEA Community Edition
Informasi latar belakang
Gambar berikut menunjukkan aliran data yang bekerja.

Konfigurasi langganan sisi server
Di Konsol IoT Platform, buat langganan sisi server MNS dan pilih jenis pesan yang ingin dilanggan.
Masuk ke Konsol IoT Platform.
Di halaman Overview, klik All environment. Pada tab All environment, temukan instance yang ingin dikelola dan klik ID atau nama instance tersebut.
Di bilah navigasi sebelah kiri, pilih . Di halaman Products, klik Create Product untuk membuat produk. Dalam contoh ini, sebuah produk detektor gas dibuat.
Pilih untuk membuat perangkat di bawah produk detektor gas.
Sebelum menggunakan Link SDK untuk mengembangkan perangkat, Anda harus mendapatkan sertifikat perangkat.
Di bilah navigasi sebelah kiri, pilih . Di halaman Server-side Subscription, klik Create Subscription untuk membuat langganan sisi server MNS. Untuk informasi lebih lanjut, lihat Konfigurasikan Langganan Sisi Server SMQ.
CatatanPertama kali Anda memilih MNS dari daftar drop-down Subscription Type, sebuah pesan akan meminta Anda untuk memberikan otorisasi kepada IoT Platform untuk mengakses MNS. Klik Authorize Now untuk masuk ke Konsol Resource Access Management (RAM). Klik Confirm Authorization Policy.
Atur parameter Message Type menjadi Device Status Change Notification. Semua pesan tentang perubahan status perangkat di bawah produk didorong ke antrian MNS.
Setelah Anda membuat langganan, IoT Platform secara otomatis membuat antrian di MNS. Antrian ini digunakan untuk menerima pesan dari IoT Platform. Format nama antrian adalah
aliyun-iot-${yourProductKey}. Saat menggunakan MNS SDK untuk mendengarkan pesan dari antrian, Anda harus menentukan nama antrian tersebut.Di tab Subscriptions, arahkan pointer di atas ikon di sebelah MNS untuk melihat nama antrian MNS.

Gunakan MNS SDK untuk menerima pesan
Dalam contoh ini, MNS SDK for Java digunakan.
Unduh paket sampel MNS SDK for Java, dan ekstrak paket tersebut. Untuk mengunduh paket sampel, lihat Catatan Rilis SDK for Java.
Dalam contoh ini, paket aliyun-sdk-mns-samples-1.1.9.1.zip digunakan.
Di IntelliJ IDEA, pilih direktori aliyun-sdk-mns-samples-1.1.9.1 untuk mengimpor proyek.
Di direktori lokal C:\Users\${YourComputerUserName}, buat file .aliyun-mns.properties. Tambahkan informasi identitas dalam format berikut ke dalam file. Informasi identitas ini digunakan oleh MNS untuk autentikasi.
CatatanDi Linux, direktori home adalah /home/YOURNAME/. Di Windows, direktori home adalah C:\Users\YOURNAME.
mns.accountendpoint=http://${your_accountId}.mns.${your_regionId}.aliyuncs.com mns.accesskeyid=${your_accesskeyid} mns.accesskeysecret=${your_accesskeysecret}Parameter
Deskripsi
accountendpoint
Titik akhir MNS. Di konsol MNS, pilih wilayah tempat antrian MNS berada dan klik Details dari antrian untuk melihat titik akhir.
accesskeyid
ID AccessKey dan Rahasia AccessKey dari akun Alibaba Cloud Anda.
Masuk ke konsol IoT Platform, arahkan pointer di atas foto profil, lalu klik AccessKey Management untuk mendapatkan ID AccessKey dan Rahasia AccessKey.
accesskeysecret
Tambahkan kode berikut ke file ComsumerDemo di direktori src\main\java\com.aliyun.mns.sample.Queue. Kode ini digunakan untuk menentukan nama antrian yang dibuat secara otomatis oleh IoT Platform.
public static void main(String[] args) { CloudAccount account = new CloudAccount( ServiceSettings.getMNSAccessKeyId(), ServiceSettings.getMNSAccessKeySecret(), ServiceSettings.getMNSAccountEndpoint()); MNSClient client = account.getMNSClient(); //Inisialisasi klien. //Ekstraksi pesan. try{ CloudQueue queue = client.getQueueRef("aliyun-iot-a1eN7La****");//Tentukan nama antrian yang dibuat secara otomatis oleh IoT Platform. for (int i = 0; i < 10; i++) { Message popMsg = queue.popMessage(); //Tentukan periode timeout untuk polling panjang. if (popMsg != null){ System.out.println("message handle: " + popMsg.getReceiptHandle()); System.out.println("message body: " + popMsg.getMessageBodyAsString()); //Dapatkan pesan mentah. System.out.println("message id: " + popMsg.getMessageId()); System.out.println("message dequeue count:" + popMsg.getDequeueCount()); //<<tambahkan logika khusus Anda.>> //Hapus pesan dari antrian. queue.deleteMessage(popMsg.getReceiptHandle()); System.out.println("delete message successfully.\n"); } } }Jalankan file ComsumerDemo.java.
Konfigurasikan SDK perangkat
Di halaman Link SDK, pilih bagian "SDK for Java".
Unduh paket demo Link SDK for Java dan ekstrak paket tersebut.
CatatanDengan mengunduh demo, Anda setuju dengan Perjanjian Lisensi Perangkat Lunak.
Di IntelliJ IDEA, impor direktori JavaLinkKitDemo sebagai proyek.
Di file device_id, tentukan informasi tentang sertifikat perangkat.

Di file MqttSample di direktori src\main\java\com.aliyun.alink.devicesdk.demo, tentukan nama topik tempat data perangkat dikirimkan di bagian publish.

Di file HelloWorld di direktori src\main\java\com.aliyun.alink.devicesdk.demo, tentukan titik akhir instance IoT Platform yang ingin dihubungkan ke perangkat.
Untuk informasi tentang cara mendapatkan titik akhir, lihat Kelola Titik Akhir Instance.

Jalankan file HelloWorld.java untuk menghubungkan perangkat ke IoT Platform.
Verifikasi hasil
Setelah Anda menjalankan kode, pesan dikirim ke antrian MNS. Pesan tersebut menunjukkan bahwa perangkat sedang online. Anda dapat menggunakan MNS SDK for Java untuk menerima pesan tersebut dan kemudian menghapus pesan dari antrian MNS.
Gambar berikut menunjukkan cara menerima pesan dan kemudian menghapus pesan tersebut.
