All Products
Search
Document Center

IoT Platform:Menghubungkan klien ke IoT Platform menggunakan SDK untuk Java

Last Updated:Jul 06, 2025

Topik ini menjelaskan cara menghubungkan klien Java Message Service (JMS) yang menggunakan protokol Advanced Message Queuing Protocol (AMQP) ke Alibaba Cloud IoT Platform dan menerima pesan dari IoT Platform dengan menggunakan fitur langganan sisi server.

Prasyarat

ID grup konsumen yang berlangganan pesan topik telah diperoleh.

  • Anda dapat menggunakan grup konsumen default bernama DEFAULT_GROUP atau membuat grup konsumen di konsol IoT Platform. Untuk informasi lebih lanjut, lihat Mengelola Grup Konsumen.

  • Anda dapat menggunakan grup konsumen untuk berlangganan pesan topik. Untuk informasi lebih lanjut, lihat Konfigurasikan Langganan Sisi Server AMQP.

Lingkungan pengembangan

Dalam contoh ini, lingkungan pengembangan terdiri dari komponen-komponen berikut:

Unduh Apache Qpid JMS client

Untuk mengunduh klien dan melihat petunjuknya, kunjungi Qpid JMS 0.57.0.

Dalam contoh ini, dependensi berikut ditambahkan ke proyek Maven untuk mengunduh klien Qpid JMS:

<!-- amqp 1.0 qpid client -->
 <dependency>
   <groupId>org.apache.qpid</groupId>
   <artifactId>qpid-jms-client</artifactId>
   <version>0.57.0</version>
 </dependency>
 <!-- util for base64-->
 <dependency>
   <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.10</version>
</dependency>

Demo

Anda dapat menggunakan klien AMQP untuk menerima pesan dari IoT Platform menggunakan akun Alibaba Cloud atau pengguna RAM. Sebagai contoh, Perusahaan A memiliki akun Alibaba Cloud bernama Akun A dan Perusahaan B memiliki akun Alibaba Cloud bernama Akun B. Perusahaan A telah mengonfigurasi langganan sisi server di konsol IoT Platform menggunakan Akun A.

  • Gunakan Akun A atau pengguna Resource Access Management (RAM)-nya yang diberikan izin secara langsung

    Catatan

    Jika Anda menggunakan pengguna RAM, Anda harus melampirkan kebijakan RAM yang berisi tindakan iot:sub ke pengguna RAM tersebut. Dengan cara ini, pengguna RAM dapat menggunakan fitur langganan sisi server IoT Platform. Jika tidak, koneksi akan gagal. Untuk informasi lebih lanjut, lihat Pemetaan antara Operasi API IoT Platform dan Kebijakan RAM.

    Untuk meningkatkan keamanan data, kami sarankan Anda menggunakan peran RAM untuk memberi otorisasi kepada pengguna RAM agar dapat menggunakan fitur langganan sisi server. Untuk informasi lebih lanjut, lihat bagian berikut.

    Untuk informasi lebih lanjut, lihat bagian Menerima Pesan Langganan Sisi Server dalam Akun Saat Ini dari topik ini.

  • Gunakan pengguna RAM yang mengasumsikan peran RAM

    Pengguna RAM yang Anda gunakan dapat berasal dari Akun A atau Akun B. Anda dapat menggunakan pengguna RAM tersebut untuk menghubungkan klien AMQP ke IoT Platform yang diaktifkan dalam Akun A. Dengan cara ini, Anda dapat menerima pesan perangkat menggunakan fitur langganan sisi server.

    Untuk informasi lebih lanjut, lihat bagian Menerima Pesan Langganan Sisi Server sebagai Pengguna RAM yang Mengasumsikan Peran RAM dari topik ini.

Menerima pesan langganan sisi server dalam akun saat ini

  1. Unduh paket demo dan ekstrak file tersebut.

  2. Buka IntelliJ IDEA dan impor proyek sampel amqp-demo-en dalam paket demo.

    Dalam file pom.xml, dependensi Maven telah ditambahkan untuk mengunduh klien Qpid JMS.

  3. Dalam file AmqpClient.java di direktori src/main/java/com.aliyun.iotx.demo, tentukan parameter koneksi AMQP yang dijelaskan dalam tabel berikut.

    Penting
    • Pastikan Anda menentukan nilai parameter yang valid. Jika tidak, klien AMQP gagal terhubung ke IoT Platform.

    • Dalam contoh ini, potongan kode Thread.sleep(60 * 1000); ditambahkan untuk menghentikan program setelah program dimulai dan berjalan selama 1 menit. Anda dapat menentukan durasi sesuai dengan kebutuhan bisnis Anda.

    Untuk informasi lebih lanjut, lihat Menghubungkan Klien AMQP ke IoT Platform.

    Parameter

    Deskripsi

    accessKey

    ID AccessKey dan rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM-nya.

    Masuk ke konsol IoT Platform, arahkan pointer ke foto profil di sudut kanan atas, lalu klik AccessKey Management untuk mendapatkan ID AccessKey dan rahasia AccessKey.

    accessSecret

    consumerGroupId

    ID grup konsumen dari instance IoT Platform.

    Untuk melihat ID grup konsumen, lakukan langkah-langkah berikut: Masuk ke konsol IoT Platform dan klik kartu instance yang ingin Anda kelola. Di panel navigasi di sebelah kiri, pilih Message Forwarding > Server-side Subscription. ID grup konsumen ditampilkan pada tab Consumer Groups.

    iotInstanceId

    ID instance IoT Platform. Anda dapat melihat ID instance pada tab Overview di konsol IoT Platform.

    • Jika ID instance ditampilkan, Anda harus menyetel parameter ini ke ID instance.

    • Jika tab Overview tidak ditampilkan atau instance Anda tidak memiliki ID, biarkan parameter ini kosong dalam format iotInstanceId = "".

    clientId

    ID klien. Anda harus menentukan ID kustom. ID harus terdiri dari 1 hingga 64 karakter. Kami sarankan Anda menggunakan pengenal unik sebagai ID klien, seperti UUID, alamat MAC, atau alamat IP server tempat klien berjalan.

    Setelah klien AMQP terhubung ke IoT Platform dan dimulai, lakukan langkah-langkah berikut untuk melihat detail klien: Masuk ke konsol IoT Platform dan klik kartu instance yang ingin Anda kelola. Di panel navigasi di sebelah kiri, pilih Message Forwarding > Server-side Subscription. Pada tab Consumer Groups, temukan grup konsumen yang ingin Anda kelola dan klik View di kolom Tindakan. ID setiap klien ditampilkan pada tab Consumer Group Status. Anda dapat menggunakan ID klien untuk mengidentifikasi klien dengan mudah.

    connectionCount

    Jumlah koneksi yang diaktifkan pada klien AMQP. Nilai maksimum: 128. Parameter ini digunakan untuk penskalaan horizontal dalam skenario pendorongan pesan waktu nyata.

    Di halaman Consumer Group Details, setiap klien yang terhubung ditampilkan sebagai ${clientId}+"-"+ Number. Nomor minimum adalah 0.

    host

    Titik akhir yang digunakan klien AMQP untuk terhubung ke IoT Platform.

    Untuk informasi lebih lanjut tentang titik akhir yang dapat Anda tentukan untuk variabel ${YourHost}, lihat Kelola titik akhir instance.

  4. Jalankan program AmqpClient.java.

    • Jika informasi serupa dengan output berikut ditampilkan, klien AMQP terhubung ke IoT Platform dan dapat menerima pesan:

      topic = /***********/******/thing/event/property/post,
      message = 2**************7,
      content = {"temperature":29,"humidity":29,"time":1617357297270}

      Parameter

      Deskripsi

      topic

      Topik yang digunakan untuk mengirimkan properti perangkat.

      messageId

      ID pesan.

      content

      Konten pesan.

    • Jika terjadi kesalahan dalam kode atau lingkungan jaringan, klien AMQP gagal terhubung ke IoT Platform.

      Anda dapat memeriksa kode atau lingkungan jaringan berdasarkan log, menyelesaikan masalah, lalu menjalankan kode lagi.

Menerima pesan langganan sisi server sebagai pengguna RAM yang mengasumsikan peran RAM

Prasyarat

Pengguna RAM diberi peran RAM untuk mengakses sumber daya langganan sisi server IoT Platform yang dimiliki oleh Akun A. Untuk informasi lebih lanjut, lihat Otorisasi Pengguna RAM Akun Alibaba Cloud Saat Ini untuk Menggunakan Langganan Sisi Server dan Otorisasi Pengguna RAM Akun Lain untuk Menggunakan Langganan Sisi Server.

Prosedur

  1. Unduh paket demo dan ekstrak file tersebut.

  2. Buka IntelliJ IDEA dan impor proyek sampel amqp-sts-demo dalam paket demo.

    Dalam file pom.xml, dependensi Maven telah ditambahkan untuk mengunduh klien Qpid JMS.

  3. Dalam file AmqpStsTokenClient.java di direktori src/main/java/com/aliyun/iotx/demo, tentukan parameter koneksi AMQP yang dijelaskan dalam tabel berikut.

    Penting
    • Pastikan Anda menentukan nilai parameter yang valid. Jika tidak, klien AMQP gagal terhubung ke IoT Platform.

    • Token Layanan Keamanan (STS) valid hingga 1 jam. Anda harus memperbarui parameter koneksi AMQP secara berkala untuk memastikan bahwa klien AMQP dapat terhubung kembali ke IoT Platform sesuai harapan. Untuk informasi lebih lanjut, lihat bagian scheduledExecutorService.scheduleAtFixedRate dalam kode demo.

    • Dalam contoh ini, potongan kode Thread.sleep(6000 * 1000); ditambahkan untuk menghentikan program setelah program dimulai dan berjalan selama 1 menit. Anda dapat menentukan durasi sesuai dengan kebutuhan bisnis Anda.

    Untuk informasi lebih lanjut, lihat Menghubungkan Klien AMQP ke IoT Platform.

    Parameter

    Deskripsi

    CONNECTION_COUNT

    Jumlah koneksi yang diaktifkan pada klien AMQP. Nilai maksimum: 128. Parameter ini digunakan untuk penskalaan horizontal dalam skenario pendorongan pesan waktu nyata.

    Di halaman Consumer Group Details di konsol IoT Platform, setiap klien yang terhubung ditampilkan sebagai "clientId-"+ Number. Nomor minimum adalah 0.

    DURATION_SECONDS

    Periode validitas token STS. Periode validitas tidak boleh melebihi 1 jam. Nilai valid: 15 hingga 60. Unit: menit.

    STS_ENDPOINT

    Titik akhir yang digunakan untuk mendapatkan token STS. Untuk informasi lebih lanjut, lihat Titik akhir.

    STS_ACCESS_KEY

    ID AccessKey dan rahasia AccessKey dari pengguna RAM yang mengasumsikan peran RAM Akun A.

    STS_ACCESS_SECRET

    STS_ROLE_ARN

    Nama ARN (Alibaba Cloud Resource Name) dari peran RAM yang akan diasumsikan. Format: acs:ram::<account-id>:role/<role-name>.

    <role-name> adalah nama peran RAM dalam huruf kecil. Setelah Anda membuat peran RAM, Anda dapat mengklik nama peran untuk melihat ARN di bagian Basic Information.

    CONSUMER_GROUP_ID

    ID grup konsumen yang berlangganan pesan langganan sisi server.

    Untuk melihat ID grup konsumen, lakukan langkah-langkah berikut: Masuk ke konsol IoT Platform dan klik kartu instance yang ingin Anda kelola. Di panel navigasi di sebelah kiri, pilih Message Forwarding > Server-side Subscription. ID ditampilkan pada tab Consumer Groups.

    IOT_INSTANCE_ID

    ID instance IoT Platform dalam Akun A.

    Anda dapat masuk ke konsol IoT Platform dan melihat ID instance pada tab Overview.

    • Jika ID instance ditampilkan, Anda harus menyetel parameter ini ke ID instance.

    • Jika tab Overview tidak ditampilkan atau instance Anda tidak memiliki ID, biarkan parameter ini kosong dalam format IOT_INSTANCE_ID = "".

    HOST

    Titik akhir yang digunakan klien AMQP untuk terhubung ke instance IoT Platform dalam Akun A. Untuk informasi lebih lanjut, lihat Kelola titik akhir instance.

  4. Jalankan program AmqpStsTokenClient.java.

    • Jika informasi serupa dengan output berikut ditampilkan, klien AMQP terhubung ke IoT Platform dan dapat menerima pesan:

      topic = /***********/******/thing/event/property/post,
      message = 2**************7,
      content = {"temperature":29,"humidity":29,"time":1617357297270}

      Parameter

      Deskripsi

      topic

      Topik yang digunakan untuk mengirimkan properti perangkat.

      messageId

      ID pesan.

      content

      Konten pesan.

    • Jika terjadi kesalahan dalam kode atau lingkungan jaringan, klien AMQP gagal terhubung ke IoT Platform.

      Anda dapat memeriksa kode atau lingkungan jaringan berdasarkan log, menyelesaikan masalah, lalu menjalankan kode lagi.

Referensi

Untuk informasi lebih lanjut tentang kode kesalahan yang terkait dengan fitur langganan sisi server, lihat bagian Kode Kesalahan yang Terkait dengan Pesan dari topik "Log IoT Platform".