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 satu-lawan-banyak atau banyak-lawan-banyak, yang melibatkan 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, sehingga penerima dapat menerima pesan tanpa harus berlangganan terlebih dahulu.
Model P2P tidak hanya mengurangi biaya pendaftaran langganan bagi penerima tetapi juga mengurangi latensi karena tautan pesan dioptimalkan secara terpisah.
Mengirim pesan menggunakan model P2P vs. Mengirim pesan menggunakan model Pub/Sub
Berikut adalah perbedaan antara pengiriman pesan di ApsaraMQ for MQTT menggunakan model P2P dan model Pub/Sub:
Pengiriman pesan: Dalam model Pub/Sub, pengirim harus mengirim pesan ke topik yang disepakati 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, menyederhanakan logika program dan mengurangi biaya langganan.
Kirim pesan P2P
Saat menggunakan SDK ApsaraMQ for MQTT untuk mengirim pesan P2P, Anda perlu mengatur topik tingkat kedua menjadi p2p dan topik tingkat ketiga menjadi 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 mengatur properti subtopik menjadi 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 menyediakan tautan untuk mengunduh SDK berbagai bahasa pemrograman dan contoh kode untuk mengirim pesan P2P.
Bahasa | Unduh SDK | Contoh kode |
.NET | ||
C | ||
Java | ||
JavaScript | ||
Python | ||
PHP |
SDK untuk Go tidak mendukung pengiriman atau penerimaan pesan P2P.
Terima pesan P2P
Klien penerima hanya perlu menyelesaikan inisialisasi sebelum menerima pesan P2P.