Berlangganan kelahiran MQTT dan akankah topik? (emqttd)

11

Saya menjalankan emqttd ( emqtt.io ). Saya ingin memantau koneksi klien dan pemutusan dari proses terpisah yang akan berlangganan ke topik sistem di mana kelahiran dan pesan akan diposting. Apa cara yang tepat untuk melakukan itu?

Fabien Papleux
sumber
3
Selamat datang di IoT SE. Bisakah Anda menguraikan sedikit lebih banyak pada pengaturan? Mesin apa yang Anda jalankan emqttd dan di versi mana?
Helmar

Jawaban:

5

Saya ingin memantau koneksi klien dan pemutusan dari proses terpisah yang akan berlangganan ke topik sistem di mana kelahiran dan pesan akan diposting.

Panduan Pengguna emqtt menunjukkan topik sistem yang menawarkan beberapa Statistik Broker, yaitu $SYS/brokers/${node}/stats/clients/countmemberikan hitungan klien yang terhubung saat ini. Perhatikan bahwa ini tidak akan mencantumkan spesifik tentang klien yang terhubung - jadi saya menganggapnya bukan yang dibutuhkan di sini.

Pesan Last Will (LWT, Last Will dan Testament) bukan merupakan topik sistem melainkan topik biasa yang diatur oleh klien saat terhubung. Jika Anda ingin memantau topik itu, cukup berlangganan saja. Namun perlu dicatat bahwa pesan LWT dibuang jika klien terputus dengan anggun dengan mengirimkan pesan PUTUSKAN (lihat blog hiveMQ , btw baca bagus).

Panduan Pengguna emqtt menyajikan cara yang lebih baik untuk memantau menghubungkan dan memutuskan klien:

Baris ./bin/emqttd_ctlperintah dapat digunakan untuk permintaan dan administrasi broker EMQ (tidak bekerja pada Windows).

Saya pikir pemantauan clients list- daftarkan semua klien MQTT - dan clients show <ClientId>- tampilkan Klien MQTT - paling membantu di sini. Karena itu proses terpisah yang direncanakan untuk memantau klien tidak perlu berlangganan ke pialang tetapi hanya memanfaatkannya ./bin/emqttd_ctl.

    $ ./bin/emqttd_ctl clients list
    Client(mosqsub/43832-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64896, connected_at=1452929113)
    Client(mosqsub/44011-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64961, connected_at=1452929275)
Ghanima
sumber
Sangat berguna. Terima kasih telah meluangkan waktu. emqttd_ctl mungkin memberikan solusi parsial tetapi, dengan memiliki pubsub yang kami miliki, saya berharap Anda dapat menggunakan mekanisme itu untuk membuat peringatan. Saya kira itu adalah sesuatu yang saya masih bisa menegakkan dengan meminta klien untuk mempublikasikan kelahiran dan pesan wasiat.
Fabien Papleux
1

Yah, tidak yakin tentang pesan lahir dan LWT (Last Will and Testament) adalah opsional sesuai spesifikasi. Jadi, Anda tidak perlu menerima pesan kecuali broker Anda menyesuaikan dengan persyaratan tersebut.

cogitoergosum
sumber
LWT adalah broker yang bertindak atas nama klien yang terputus. Implementasi yang bukan opsional untuk broker. Ini hanya opsional bagi klien untuk mengatur topik wasiat terakhir.
Ghanima
Itu yang saya maksud. Klien mungkin tidak mengirimnya sebagai bagian dari paket koneksi.
cogitoergosum