在配置文件中订阅多个级别的主题?

时间:2019-07-26 14:25:31

标签: mqtt

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

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

下面显示了主题树的代码段

  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;

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

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您未在代理上配置主题,代理不知道客户端可能向其发布消息的主题或客户端可能订阅的主题(除了任何访问控制列表中的内容)。

就经纪人而言,在客户发布消息之前,主题不存在,这时它按顺序执行以下操作:

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