Một khách hàng MQTT có thể đăng ký một chủ đề được tạo bởi chính nó không?


18

Theo hiểu biết của tôi, trong MQTT, một chủ đề được tạo khi khách hàng xuất bản một cái gì đó với tên chủ đề tương ứng.

Không cần phải cấu hình một chủ đề, xuất bản trên đó là đủ.

Từ đây .

Có thể một khách hàng đăng ký chủ đề của riêng mình, sau khi nó được xuất bản, tạo ra nó? Tôi không thể tìm thấy bất kỳ hạn chế về nó trong các thông số kỹ thuật . Nó cũng không được liệt kê là hành vi bất thường có thể xảy ra:

5.4.8 Phát hiện các hành vi bất thường

Việc triển khai máy chủ có thể giám sát hành vi của Máy khách để phát hiện các sự cố bảo mật tiềm ẩn. Ví dụ:

  • Nỗ lực kết nối lặp đi lặp lại
  • Nỗ lực xác thực lặp đi lặp lại
  • Chấm dứt kết nối bất thường
  • Quét chủ đề (cố gắng gửi hoặc đăng ký nhiều chủ đề)
  • Gửi tin nhắn không gửi được (không có người đăng ký cho các chủ đề)
  • Khách hàng kết nối nhưng không gửi dữ liệu

Dựa trên điều này, tôi nghĩ rằng nó chắc chắn có thể. Vì vậy, tôi quan tâm đến các trường hợp sử dụng của tính năng này là gì?

Tại sao tiêu chuẩn cho phép cơ chế như vậy, nó sẽ phức tạp để theo dõi chủ sở hữu của các chủ đề? Vì vậy, thay vào đó nó chỉ đơn giản là cho phép khách hàng đăng ký vào chủ đề của riêng họ.

Một trường hợp sử dụng tôi có thể nghĩ là theo cách này, khách hàng có thể xác minh dữ liệu được công bố của nó.

Câu trả lời:


19

Có, có thể đăng ký một chủ đề được tạo bởi chính nó.

Một khách hàng MQTT có thể vừa là nhà xuất bản & người đăng ký. Trong các điều khoản MQTT, một khách hàng bao gồm cả subscriberspublishers.

Tôi quan tâm đến các trường hợp sử dụng của tính năng này là gì?

Một trường hợp sử dụng có thể (tôi giả sử) là, giả sử nếu có ba khách hàng (x, y, z) đăng ký vào một chủ đề x-topicđược tạo bởi x. Bất cứ khi nào một tin nhắn được công bố x-topic, mọi người đăng ký vào chủ đề đó sẽ nhận được tin nhắn. Nếu yxuất bản một thông điệp đến một chủ đề x-topic(tôi cho rằng có thể được thực hiện), nếu xkhông đăng ký chủ đề đó mặc dù nó đã tạo chủ đề, nó sẽ không nhận được tin nhắn.

Vì vậy, một khách hàng cần phải đăng ký một chủ đề để nhận tin nhắn mặc dù đây là người tạo ban đầu của chủ đề đó.

Nhưng cơ chế có thể được kiểm soát bằng cách sử dụng các nhà môi giới như một phương tiện.


Vâng, tùy chọn này vượt qua tâm trí của tôi. Chỉ, tôi không chắc chắn nếu một khách hàng mới có thể xuất bản đến một chủ đề hiện có, đã được sử dụng bởi nhà xuất bản khác.
Bence Kaulics

Có, một khách hàng mới có thể xuất bản đến một chủ đề hiện có. Hãy nhớ rằng khách hàng không liên lạc trực tiếp, mọi ấn phẩm và đăng ký đều xảy ra thông qua một nhà môi giới.
bravokeyl

0

Đúng.

Các máy khách MQTT được kết nối với một nhà môi giới có thể là một đám mây hoặc một số thiết bị khác.

Không có những thứ như tạo chủ đề. Chúng được sử dụng như một tiêu đề cho một tin nhắn. Vì vậy, nếu khách hàng của bạn đã đăng ký một chủ đề và nếu nó xuất bản một cái gì đó về chủ đề đó thì tin nhắn sẽ được nhận lại thông qua nhà môi giới cho khách hàng.

Ví dụ về các nhà môi giới tốt là Mosquitto để chạy trên thiết bị và CloudMqtt cho Nhà môi giới dựa trên đám mây


4
Điều này không thực sự mở rộng cơ thể kiến ​​thức ngoài những gì câu trả lời khác đã cung cấp một năm trước. Bạn có thể tự do thêm câu trả lời mới ngay cả cho câu hỏi đã trả lời. Tuy nhiên, những câu trả lời nên cung cấp những hiểu biết bổ sung hoặc cập nhật cho câu hỏi hoặc giải pháp.
Helmar
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.