全部产品
Search
文档中心

ApsaraMQ for MQTT:Model pesan P2P

更新时间:Jul 08, 2025

Selain model pesan publikasi-langganan (Pub/Sub) yang didukung oleh protokol Message Queuing Telemetry Transport (MQTT) standar, ApsaraMQ for MQTT juga mendukung model pesan point-to-point (P2P). Topik ini menjelaskan konsep dan prinsip model P2P serta cara menggunakan ApsaraMQ for MQTT untuk mengirim dan menerima pesan P2P.

Apa itu model P2P?

P2P adalah model pesan yang digunakan dalam skenario pesan satu lawan satu, di mana hanya ada satu pengirim dan satu penerima. Sebaliknya, model Pub/Sub biasanya digunakan dalam skenario pesan satu-lawan-banyak atau banyak-lawan-banyak, dengan satu atau lebih pengirim dan beberapa penerima.

Dalam model P2P, pengirim menentukan penerima saat mengirim pesan dan memastikan bahwa pesan tersebut hanya dikonsumsi oleh klien tertentu. Pengirim secara langsung menentukan penerima dalam informasi topik saat mengirim pesan, sehingga penerima dapat menerima pesan tanpa harus berlangganan topik terlebih dahulu.

Model P2P tidak hanya mengurangi biaya pendaftaran langganan bagi penerima tetapi juga mengurangi latensi dorongan karena tautan pesan dioptimalkan secara terpisah.

Pesan menggunakan model P2P vs. Pesan menggunakan model Pub/Sub

Perbedaan antara pengiriman pesan di ApsaraMQ for MQTT menggunakan model P2P dan model Pub/Sub adalah sebagai berikut:

  • Pengiriman pesan: Dalam model Pub/Sub, pengirim harus mengirim pesan ke topik yang disepakati bersama dengan penerima. Dalam model P2P, pengirim tidak perlu menyetujui topik terlebih dahulu dan dapat langsung mengirim pesan ke penerima berdasarkan kesepakatan.

  • Penerimaan pesan: Dalam model Pub/Sub, penerima harus berlangganan topik yang disepakati sebelumnya untuk menerima pesan. Dalam model P2P, penerima dapat menerima pesan tanpa harus berlangganan topik terlebih dahulu. Hal ini menyederhanakan logika program penerima dan mengurangi biaya langganan.

Kirim pesan P2P

Saat menggunakan SDK ApsaraMQ for MQTT untuk mengirim pesan P2P, Anda perlu menetapkan topik tingkat kedua ke p2p dan topik tingkat ketiga ke ID klien penerima.

Contoh Kode dalam Java

String p2pTopic =topic+"/p2p/GID_xxxx@@@DEVICEID_001";
sampleClient.publish(p2pTopic,message);

Saat menggunakan SDK ApsaraMQ for RocketMQ untuk mengirim pesan P2P, Anda hanya perlu menetapkan properti subtopik ke string subtopik dalam contoh kode sebelumnya karena topik induk dan subtopik dikonfigurasikan secara terpisah.

Contoh Kode dalam Java

String subTopic="/p2p/GID_xxxx@@@DEVICEID_001";
msg.putUserProperties(PropertyKeyConst.MqttSecondTopic, subTopic);

Tabel berikut memberikan tautan untuk mengunduh SDK untuk berbagai bahasa pemrograman dan contoh kode untuk mengirim pesan P2P.

Bahasa

Unduh SDK

Contoh kode

.NET

Eclipse Paho .NET SDK

Contoh kode .NET

C

Eclipse Paho C SDK

Contoh kode C

Java

Eclipse Paho SDK

Contoh kode Java

JavaScript

Eclipse Paho JavaScript

Contoh kode JavaScript

Python

Eclipse Paho Python SDK

Contoh kode Python

PHP

Mosquitto-PHP

Contoh kode PHP

Catatan

SDK untuk Go tidak mendukung pengiriman atau penerimaan pesan P2P.

Terima pesan P2P

Klien yang menerima pesan hanya perlu menyelesaikan inisialisasi sebelum menerima pesan P2P.