【问题标题】:Subscribe to topic with multiple levels in Config file?订阅配置文件中的多个级别的主题?
【发布时间】:2019-07-26 14:25:31
【问题描述】:

我正在尝试订阅配置文件中的多个主题级别,目的是每当我启动 MQTT 时,代理都有这些主题,之后当我输入通配符时,它会比较字符串并检查主题是否开启代理,如果是,它会提取数据,如果不是,它会跳转到下一个分支级别

我试图写一个级别的主题树,但不知道如何在配置文件中订阅,因为我很确定 mosquitto.subscribe 是否可以在那里工作

下图是主题树的sn-p,

  tree is the root node,
  sub_branch = tree/sub_branch;
  sub_branch_1 = tree/sub_branch_1;
  branch_1 = tree/branch/branch_1;
  branch_2 = tree/branch/branch_2;

发布后,主题在代理上,我使用通配符 树/#; 这应该给我所有分支的数据 如果主题 = 树/牧场;这是一个错误(错误的主题)并要求下一个

非常感谢任何帮助!

【问题讨论】:

  • 删除了 C++ 标签,因为它与问题无关
  • “启动 MQTT”是什么意思?你的意思是启动代理还是 MQTT 客户端?
  • 你在说什么配置文件?
  • 启动是指启动mqtt代理,配置文件是mqtt配置文件
  • 再说一遍,“mqtt 配置文件”是指客户端还是代理?

标签: mqtt


【解决方案1】:

您没有在代理上配置主题,代理不知道客户端可能向哪些主题发布消息或客户端可能订阅哪些主题(在任何访问控制列表中除外)。

就代理而言,主题在客户端发布消息之前不存在,此时它会按顺序执行以下操作:

  1. 检查该用户/客户端的 ACL(如果存在)以查看是否存在与传入主题匹配的模式,如果匹配则接受或丢弃消息
  2. 假设它接受消息,然后搜索所有订阅客户端的主题模式列表。
  3. 如果客户端匹配,它会检查客户端/用户的 ACL 以查看是否匹配,如果允许,则将该消息发送到客户端。

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 2014-01-21
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多