问题标签 [mqtt-vernemq]

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 回答
198 浏览

mqtt - 带有 Sparkplug B 的 MQTT 桥 -> NDEATH 方案未按预期工作

我有两台机器,正在测试带有 Sparkplug B 有效负载的 MQTT 桥连接。

我的桥梁按预期工作,但是当我模拟下图中注释的一些故障点时,事情没有按预期工作。我的期望是当图像中的三个点中的任何一个断开连接时,机器 B 上的代理上会出现 NDEATH。

当我杀死机器 A 上的发布者或本地 MQTT 代理时,我确实在订阅机器 B MQTT 代理时看到了预期的 NDEATH,但是当我拔出机器 A 和 B 之间的插头时,如图中的 #3 所示,我没有看到一个NDEATH!我已经等了很长时间,以确保 60 秒保持活动有足够的时间做出反应,据我所知,这通常是保持活动的 1.5 倍。

机器 A 上的发布者和代理继续运行,当第 3 点的连接重新联机时,所有消息都已传递,但我期待在桥连接断开时,任何已发布最后遗嘱和遗嘱的节点(LWT ) 会因为任何时候的连接丢失而看到 NDEATH。

我已经用 mosquitto、vernemq 和一些 hive-ce 进行了测试,但是 hive-ce 在功能上受到严重限制。我对 MQTT 桥接的理解是否遗漏了什么?不应该在所有三种情况下都发送 NDEATH 吗?

在此处输入图像描述

0 投票
0 回答
92 浏览

ubuntu - vernemq:vmq-admin 保留显示:RPC 到 'VerneMQ@xxx.xxx.xxx.xxx' 失败

我使用 vernemq 作为 mqtt 服务器,发现 vernemq 经常卡住并且无法创建新连接。我无法发布新主题。在我重新安装 vernemq 后,它会暂时正常工作。但是几个小时或几天它会再次卡住。

我发现当 vernemq 卡住时,输入命令vmq-admin retain show会失败。

以下是错误信息:

这是我的 mqtt 配置:

vernemq 版本:vernemq-1.10.3.bionic.x86_64.deb

操作系统版本:

有谁知道发生了什么?有什么建议吗?谢谢

0 投票
1 回答
67 浏览

mqtt-vernemq - 有没有办法从内存中逐出 vernemq 缓存的 auth_on_register、auth_on_publish、auth_on_subscribe 挂钩数据

  • Vernemq 构建:1.10.4.1+build.76.ref4f0bbab
  • 二郎版本:22

根据 vernemq 文档,钩子数据存储在内存缓存中,并且不会被主动处理。

我们有大约 36 万个客户端分布在 8 个节点的集群上。客户端 ID、用户名和密码不会更改,并且对于 320k 客户端是固定的,而其余 40k 客户端会不断变化。这 4 万个客户端还订阅和发布最多 3 个主题。客户端倾向于每天一次从集群断开连接并连接回任何节点,因此挂钩数据会缓存在所有节点上并增加内存。内存每天都在增加,内存使用曲线并没有变平。

问题:我担心在某个时间点我们会出现 OOM 错误并且节点可能会关闭。

我尝试使用 echo 命令(1 2 和 3)清除内存,但只清除了 buff 缓存内存,而挂钩数据没有。有没有办法从内存中清除或驱逐挂钩数据?

0 投票
1 回答
40 浏览

logging - 如何在 VerneMQ 的日志中包含时间戳

不幸的是,vernemq 代理的日志不包含时间戳。当前的解决方法似乎是在发送到某个 vernemq 主题的消息中包含时间戳,然后在消费者端将其剥离。这需要更改 2 个程序。有没有其他方法可以让 vernemq 将当前时间写入日志中的每一行?通过配置可能吗?

0 投票
1 回答
208 浏览

kubernetes - Vernemq 端口 1883,具有 haproxy-ingress 和 SSL 终止

我正在尝试在 kubernetes 上部署 vernemq,并希望使用带有 ssl 的子域访问它,但在请求转到端口 1883 上的 vernemq 之前,应终止 ssl。

0 投票
0 回答
47 浏览

mqtt - 当我在 verneMQ 集群中重新启动代理时,排队的消息会丢失

我已经设置了带有 2 个代理节点的 vernemq 集群。向代理发布了 5 条消息,并在 vernemq 仪表板中显示排队消息计数为 5。当我重新启动集群中的特定节点时,它会将其重置为 0。

0 投票
1 回答
72 浏览

mqtt - MQTT 阻止特定客户端通过 TLS 连接

我有带有 TLS 身份验证的 MQTT (VerneMQ) 设置。我还设置了从 CA(私人)频繁提取 CRL(证书吊销列表)。我可以撤销特定的客户端证书以阻止它连接到 MQTT。

有一个共享的证书,我不想撤销但也不希望客户端能够使用 MQTT 进行身份验证。以下是我的配置

有什么办法可以阻止特定的客户端证书?

0 投票
0 回答
181 浏览

docker - 连接安装在本地 Windows 10 Docker 引擎上的 VerneMQ MQTT 失败

我的机器上安装了 Docker 版本 - Docker Desktop 4.3.0 (71786)。我正在尝试使用以下命令在 Docker 上安装 VerneMQ -

contianer 的 Docker 日志如下 -

码头工人检查结果 -

现在当我尝试连接到 VerneMQ 时,我不能。我正在尝试通过 1883 端口使用 TCP://172.17.0.2 进行连接。

有人可以帮助我在哪里犯错。

注意:我没有更改配置文件。

编辑: 使用 MQTTLens chrome 扩展与 MQTT 连接。 在此处输入图像描述

EDIT2 我试图使用各种可用的 MQTT 客户端进行连接,但它们似乎都不适合我。但是当使用 C# 代码(MQTTnet Nuget 包)访问代理时,它似乎正在工作。我现在面临的唯一问题是 MQTT 版本。

当我将版本设置为 MqttProtocolVersion.V500 时,连接会引发异常,我将得到的错误是 10:48:57.303 [warning] invalid protocol version for {[],undefined} 5.

现在剩下的问题是,如何配置 VerneMQ 容器以接受最新的 Protocol V500?

0 投票
1 回答
21 浏览

mqtt - VerneMQ listener.ssl.use_identity_as_username 不工作

我为客户端设置了带有 TLS 身份验证的 VerneMQ,并进行了以下配置。

通过此配置,客户端能够使用 TLS 证书进行连接。

使用 admin cli,我可以看到使用 TLS 证书连接的客户端以匿名方式连接

如果我设置DOCKER_VERNEMQ_ALLOW_ANONYMOUS = "off",则客户端无法连接到代理并出现错误Connection error: Connection Refused: not authorised.

在 MQTT 方面,我看到以下错误

我的配置有什么问题?

0 投票
0 回答
16 浏览

mqtt - VerneMQ-MySQL 插件场景中“publish_acl”和“subscribe_acl”可以为空吗?

我们正在尝试为我们的 VerneMQ 实例实现基于数据库 (MySQL) 的授权和身份验证。我们成功地创建了具有不同“clientid-username-password”集的客户端。我们面临的困难是主题订阅和发布。当 publish_acl 和 subscribe_acl 字段中存在某些主题值时,代理在从客户端接收消息时会造成一些不一致。在我们看到的 VerneMQ 文档中,SQL DDL 必须具有某些字段(挂载点、client_id、用户名、密码等),类似的 publish_acl 和 subscribe_acl 字段也在那里。我们不需要的是限制具有特定发布和订阅主题的客户端。

有没有办法我们可以绕过将值放入 publish_acl 和 subscribe_acl 字段,以便客户端可以从/向任何主题发布和接收消息?

任何帮助表示赞赏!