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ì?
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ì?
Câu trả lời:
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/count
cung 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_ctl
lệ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_ctl
thay 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)
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 đó.