问题标签 [libmosquitto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
71 浏览

mqtt - MQTT 动态安全插件 API 控制 - 使用发布/订阅命令的客户端/角色/组管理

我正在使用 Mosquitto 的内置安全插件来定义对我的代理的访问。到目前为止,我已经使用mosquitto_ctrl <connection options> dynsec <command> ... 命令设置了客户端、角色和组。(见蚊子

代理在 Docker 容器中运行。但是,我想从另一个 Docker 容器(即外部)管理动态安全插件。准确地说,我想使用管理员凭据连接到代理(例如使用python paho)并发布对安全插件的修改。

我认为这必须是可能的,因为它在文档中明确提到:

初始安装后插件的所有控制都是通过 $CONTROL/dynamic-security/v1 中的 MQTT 主题 API。这允许构建集成,但不是人们直接使用的最佳选择。

例如,列出我想象中的所有客户,例如

不幸的是,我无法让它工作。有人知道如何将插件用作 API 吗?
谢谢!

PS:我在mosquitto github repo上使用发布命令找到了更多提示,说消息应该如下所示::

编辑:
我终于能够在hardillb的帮助下解决它。

  1. 像这样订阅:
  1. 像这样发布:

然后将在订阅端提供客户端列表。

0 投票
1 回答
38 浏览

c++ - 将 MQTT 侦听器 (mosquittopp) 创建为线程时 100% cpu 负载

我目前正在为我的 Raspberry Pi 开发一个门铃应用程序,该应用程序应该在出现特定消息时触发 GPIO 操作。

因此,我有一个主要课程doorbell

门铃.h

门铃.cpp

和一个简单的threadLauncher类来处理从我的门铃类开始的线程:

线程启动器.h

线程启动器.cpp

最后,有一个mqttClient类来处理 MQTT 的东西;它基于mosquittopp

mqttClient.h

mqttClient.cpp

最后,我的切入点:

主文件

这是我的问题:

在我的 Raspberry Pi 4 B 上启动应用程序时,我一直在四个 CPU 之一上获得 100% 的 cpu 负载。

launcher.go(std::make_unique<std::thread>(&doorbell::registerMqttListener, this));在我的构造函数中删除该行时doorbell.cpp,一切正常。

这可能是mosquittopp库的错误行为还是我在这里做错了什么?

编辑:这是htop输出: HTOP 输出

附加问题:在 Visual Studio 中远程调试 IoT 设备时,如何分析我的 CPU/RAM 使用情况?

编辑: 我现在可以确认该loop_start()函数mosquittopp导致 100% cpu 负载。这是一个蚊子问题还是我以错误的方式使用它?