Apakah ada mekanisme RPC standar untuk MQTT?

10

Over on Stack Overflow ada pertanyaan tentang menerapkan interaksi permintaan / respons melalui MQTT. Sebagai satu jawaban mencatat, Anda dapat melakukannya dengan menerbitkan permintaan pada satu topik dan mendengarkan tanggapan pada token lain yang termasuk dalam permintaan. Agak canggung, tapi berhasil.

Karena MQTT digunakan secara luas di seluruh IoT, saya bertanya-tanya, apakah ada upaya untuk membakukan interaksi tipe RPC ini demi interoperabilitas?

Chris Steinbach
sumber
Baru saja menemukan ini yang dapat menjadi dasar untuk jawaban: esr.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf . Harus diakui bukan spesifikasi permintaan / respons umum yang digabungkan erat dengan LWM2M.
Chris Steinbach

Jawaban:

9

Saya tidak mengetahui adanya standar semacam itu.

Seperti yang ditunjukkan dalam jawaban untuk pertanyaan lain, pub / sub tidak cocok untuk RPC tetapi bisa dibengkokkan agar sesuai.

Salah satu kekuatan MQTT adalah bahwa muatan dapat berupa apa saja, memungkinkan pengembang untuk membuat pilihan terbaik untuk proyek mereka.

hardillb
sumber
4

Saya tidak yakin apa persyaratan Anda untuk metode komunikasi RPC terstandarisasi di MQTT, tetapi saya masih melakukan sedikit pencarian dan menemukan beberapa poin untuk disampaikan kepada Anda.

Pertama-tama, tentang metode standar. Pada satu proyek Github rpc deskripsi jenis kuku itu:

Modul ini menyediakan antarmuka rpc untuk koneksi mqtt, pada dasarnya ini adalah strategi permintaan dan respons yang menggunakan struktur topik MQTT sebagai transportasi.

Intinya adalah menggunakan model tumpukan (model OSI adalah standar) dan cukup gunakan MQTT sebagai salah satu lapisan tumpukan.

Proyek ini pada json-rpc over mqtt menggunakan protokol terstandarisasi atau paling tidak terkenal atas MQTT.

Tentang kecanggungan, Anda tidak harus membangun MQTT dan RPC di atasnya dari awal tetapi menggunakan salah satu pustaka tertaut atau yang lain yang ditemukan di Github.

OK, untuk setiap bahasa tidak ada dasar siap pada Github, tetapi dalam hal itu kepatuhan menjadi kriteria perencanaan dan dapat mempengaruhi seluruh proyek lainnya, sayangnya.

mico
sumber
Saya tidak punya persyaratan nyata. Dorongan untuk pertanyaan ini adalah membandingkan CoAP (yang memiliki RFC permintaan / tanggapan dan mekanisme pub / sub) dengan MQTT yang saya cukup yakin sekarang hanya memiliki pub / sub terstandarisasi. Tentunya memiliki beberapa pustaka sumber terbuka untuk RPC lebih baik daripada tidak sama sekali.
Chris Steinbach
4

Azure IoT Hub memiliki konsep metode langsung:

IoT Hub memberi Anda kemampuan untuk memanggil metode langsung pada perangkat dari cloud.

Ini diimplementasikan lebih dari MQTT (AMQP tidak didukung), di mana

Perangkat menerima permintaan metode langsung pada topik MQTT:

$iothub/methods/POST/{method name}/?$rid={request id}.

Mereka membungkus ini dalam SDK mereka, sehingga pengembang tidak perlu khawatir tentang pemantauan topik secara khusus. Anda bisa menerapkan pendekatan serupa.

Seperti jawaban lain, pub-sub tidak cocok untuk RPC, dan tidak ada standar, sejauh yang saya ketahui.

Dokumentasi lebih lanjut ada di sini .

Simon Munro
sumber