Đăng ký khai sinh MQTT và sẽ chủ đề? (emqttd)


11

Tôi đang chạy emqttd ( emqtt.io ). Tôi muốn theo dõi các khách hàng kết nối và ngắt kết nối từ một quy trình riêng biệt sẽ đăng ký vào một chủ đề hệ thống nơi các thông báo khai sinh và sẽ được đăng. Cách đúng đắn để làm điều đó là gì?


3
Chào mừng bạn đến với IoT SE. Bạn có thể xây dựng thêm một chút về thiết lập? Bạn đang chạy loại máy nào trên emqttd và ở phiên bản nào?
Helmar

Câu trả lời:


5

Tôi muốn theo dõi các khách hàng kết nối và ngắt kết nối từ một quy trình riêng biệt sẽ đăng ký vào một chủ đề hệ thống nơi các thông báo khai sinh và sẽ được đăng.

Hướng dẫn sử dụng của emqtt hiển thị một chủ đề hệ thống cung cấp một số Thống kê môi giới, tức là $SYS/brokers/${node}/stats/clients/countcung cấp số lượng khách hàng được kết nối hiện tại. Lưu ý rằng điều này sẽ không liệt kê bất kỳ chi tiết cụ thể nào về các máy khách được kết nối - vì vậy tôi cho rằng đó không phải là điều cần thiết ở đây.

Các tin nhắn cuối cùng (LWT, Di chúc cuối cùng và Di chúc) không phải là một chủ đề hệ thống mà là một chủ đề thông thường được thiết lập bởi khách hàng trong quá trình kết nối. Nếu bạn muốn theo dõi chủ đề đó chỉ cần đăng ký nó. Tuy nhiên, xin lưu ý rằng các tin nhắn LWT sẽ bị loại bỏ nếu khách hàng ngắt kết nối một cách duyên dáng bằng cách gửi tin nhắn DISCONNECT (xem blog hiveMQ , đọc btw tuyệt vời).

Hướng dẫn sử dụng của emqtt trình bày một cách tốt hơn để giám sát việc kết nối và ngắt kết nối máy khách:

Dòng ./bin/emqttd_ctllệnh có thể được sử dụng để truy vấn và quản trị nhà môi giới EMQ (không hoạt động trên Windows).

Tôi nghĩ rằng việc theo dõi clients list- liệt kê tất cả các khách hàng MQTT - và clients show <ClientId>- hiển thị một Khách hàng MQTT - hữu ích nhất ở đây. Do đó, quy trình riêng biệt được lên kế hoạch để giám sát khách hàng do đó không cần phải đăng ký với nhà môi giới mà chỉ cần sử dụng ./bin/emqttd_ctlthay thế.

    $ ./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)

Rất hữu ích. Cảm ơn đã dành thời gian. emqttd_ctl có thể cung cấp một giải pháp một phần nhưng, có một pubsub theo ý của chúng tôi, tôi đã hy vọng rằng bạn có thể sử dụng cơ chế đó để tạo cảnh báo. Tôi đoán đó là điều mà tôi vẫn có thể thực thi bằng cách yêu cầu khách hàng xuất bản tin nhắn khai sinh và sẽ.
Fabien Papleux

1

Chà, không chắc chắn về thông điệp khai sinh và LWT (Di chúc cuối cùng và Di chúc) là tùy chọn theo thông số kỹ thuật. Vì vậy, bạn không nhất thiết phải nhận được tin nhắn trừ khi nhà môi giới của bạn tùy chỉnh các yêu cầu đó.


LWT là nhà môi giới thay mặt cho khách hàng bị ngắt kết nối. Thực hiện đó không phải là tùy chọn cho các nhà môi giới. Nó chỉ là tùy chọn cho khách hàng để thiết lập một chủ đề cuối cùng.
Ghanima

Đó là những gì tôi muốn nói. Máy khách có thể không gửi như một phần của gói kết nối.
cogitoergosum
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.