问题标签 [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 投票
2 回答
409 浏览

c++ - 使用 PAHO c / cpp 在代理后面使用 MQTT

因此,我的 paho 客户端位于启用了 sock 的 ccproxy 服务器后面。

问题出在 paho python lib 中,有一种设置代理的方法

client.proxy_set(proxy_type=socks.HTTP, proxy_addr="192.168.1.7", proxy_port=808)

有人可以指导我在 cpp 上进行相同的代理设置吗?在文档或社区中找不到太多文档。

0 投票
2 回答
559 浏览

python - VerneMQ single publish messages lost when client is offline

I am quite new to MQTT and brokers, but I am having an issue with VerneMQ not sending offline messages to clients. Here is my setup. I have a backend written in Python which is using the Paho Eclipse MQTT library's single() method to send messages to a connected client. The client, a virtual machine on my development station, has a client which is written in go-lang, using paho.mqtt.golang to connect to the broker and subscribe.

The call to single() on the backend looks like this:

On the client, the session is established with the following options:

I am not showing all the code, but hopefully enough to illustrate how the session is being set up.

I am running VerneMQ as a docker container. We are using the following environment variables to change configuration defaults in the Dockerfile:

As long as the client has an active connection to the broker, the server's published messages arrive seamlessly. However, if I manually close the client's connection to the broker, and then publish a message on the backend to that client, when the client's connection reopens, the message is not resent by the broker. As I said, I am new to MQTT, so I may need to configure additional options, but so far I've yet to determine which. Can anyone shed any light on what might be happening on my setup that would cause offline messages to not be sent? Thanks for any information.

0 投票
0 回答
146 浏览

python - 更新与 VerneMQ 的连接时,“由于 register_subscriber_retry_exhausted 无法注册客户端”

我们有一个 Flask 应用程序,它需要向 VernqMQ 代理上的不同订阅发送消息。我们使用 paho.mqtt 库连接到代理,并且我们使用基于 JWT 的身份验证,该身份验证通过自定义 webhook 脚本验证代理。但是,JWT 每 7 天过期一次,因此 Flask 应用程序需要更新该令牌并重新连接。我们目前正在 on_disconnect 事件中处理这个问题。此设置有效,但是,一段时间后,我们开始收到此错误消息:

该消息在代理的日志文件中出现了数百次,但我们找不到有关此错误的任何信息。以下是我们如何在 Flask 中建立/更新 MQTT 代理连接的代码:

为什么会出现此错误消息,我们可以做些什么来解决它?我们如何设置代理连接有问题吗?任何有关此的信息将不胜感激。

附加信息:代理是 VerneMQ 的单个实例,而不是集群。所有配置值都设置为默认值。

0 投票
1 回答
148 浏览

erlang - 登录 vernemq 插件

我正在尝试使用 erlang 在我的 vernemq 客户端中实现连接用户的登录。从文档中,我发现这可能很糟糕,因为客户端的可伸缩性以及可能有很多客户端连接和断开连接的假设。这不是我的情况,我只会有一堆客户,但会有很多消息。无论如何,对于我的问题。使用时是否可以更改日志文件error_logger?或者我应该使用不同的模块进行日志记录?如果需要,日志文件可以位于任何位置,但我需要将它与 vernemqs 分开console.log。一个后续问题是,我能以某种方式在日志上获得一个浮动窗口吗?我不需要保留前一年的日志,也不想每天或每周手动清理它们或类似的东西

感谢您的任何回复

0 投票
1 回答
389 浏览

mqtt - MQTT 3.1.1 代理 QoS=1(“至少一次”)消息重新传递

我试图找出关于MQTT 3.1.1消息重新传递的现实情况,该消息由具有“至少一次”(QoS 1)配置的 MQTT 订阅者接收到的消息:

  • MQTT 代理是否会重新传递来自订阅者的未确认的“QoS 1”消息?
  • MQTT 代理重新交付之前必须经过多长时间?
  • MQTT 代理是否无休止地尝试重新传递未确认的消息?
  • 还有其他方法可以触发重新交付吗?

假设 MQTT订阅者没有对PUBACK收到的 MQTT 消息做出响应,MQTT 代理需要(至少根据我的理解)重新传递必须“至少一次”接收到的消息,直到订阅者发送PUBACK该消息.

为了更具体地了解我想要实现的目标:
推迟发送直到成功保存接收到的消息是否是一个好/有效的想法PUBACK- 有效地扩大 QoS 级别,直到我的订阅应用程序保证消息得到处理。
以及是否会发送例如持久性错误(数据库超时)PUBACK,这将自动导致重新传递此类消息。

谢谢和最好的问候

0 投票
1 回答
84 浏览

mqtt - 前几条消息在传输到离线的 mqtt 客户端时丢失

我有使用 paho mqtt 库的 vernemq 服务器和 mqtt 客户端(使用 python 或 C - 无论如何)。订阅者和发布者都使用 Qos2 和 clean_session == False。所以问题是当订阅者离线时,我尝试发送一些消息。其中一些丢失了。仔细研究了参数,发现第一个max_inflight_messages丢失了。我的意思是说。在配置文件 vernemq.conf 中,我设置 max_inflight_messages = 20(默认情况下)。然后订阅者下线,我发送21条消息,然后订阅者上线,前20条丢失,21s送达。我用不同数量的消息尝试了很多次 - 结果相同,前 20 条消息丢失,从 21 条开始,下一条消息被接收。当我尝试 max_inflight_messages = 1 时,第一条消息丢失,其他消息被接收。有任何想法吗?我的文件 vernemq.conf:

0 投票
0 回答
99 浏览

docker - GKE 上的 VerneMQ 集群自动加入

我是 VerneMQ 和 K8s 的新手。我在 GKE 上部署了一个有效的 VerneMQ docker 映像(由源代码制作),并部署了 2 个副本。它们工作正常,我必须手动连接到一个容器并弹出:

vmq-admin cluster join discovery-node=<OtherClusterNode>

这样他们就可以找到彼此并加入 VerneMQ 集群。

有没有办法在容器启动时相互发现并加入集群?,而不是每次我重建容器时手动

我正在考虑以某种方式修复每个凡尔纳节点名称并运行脚本(仅在一个容器中)以加入集群,但感觉很hacky。

我的主要问题是,在容器启动和vmq-admin cluster join命令执行之间,我有 2 个独立的 vernemq 服务器,一个订阅者可能连接到与消费者不同的服务器。

我的部署 yaml 看起来像:

谢谢

0 投票
0 回答
29 浏览

node.js - 在 react 接口上显示 mqtt 发布者的数据(物联网项目)

我们现在正在开展一个物联网项目,我们需要实时显示传感器数据。我们在前端使用了 React.js,在后端使用了 mongodb 和 nodejs,以及一个 MQTT vernemq broker。我们想知道什么是显示来自传感器(mqtt 发布者)的数据的最佳和最有效的方法,因为我们知道我们有两种解决方案: 1- 在前端使用 mqtt 客户端将数据直接从 mqtt 发布者引导到接口,2-在后端使用 mqtt 客户端,nodejs 接收数据,将它们存储在 mongodb 上,这导致触发更新事件并更新反应 UI。任何建议都可能是有益的,谢谢。

0 投票
1 回答
248 浏览

mysql - VerneMQ plugin_chain_exhausted 认证 MySQL

我在 Google kubernets 上有一个正在运行的 VerneMQ 实例(2 个节点的集群),并使用 MySQL (CloudSQL) 进行身份验证。服务器接受通过 TLS 的连接

它工作正常,但几天后我开始在日志上看到这条消息:

由于 plugin_chain_exhausted,无法从 XXXX:16609 验证客户端 {[],<<"Client-id">>}

客户端应用程序(paho)抱怨服务器拒绝连接“未授权(paho 错误中的代码 = 5)”

经过几次重试后,它终于连接上了。但每次它变得越来越难,直到它不再连接

如果我重新启动 VerneMQ 一切都会恢复正常

我目前最多同时连接 3 个客户端。

已连接的客户端在 pub/sub 中没有问题。

在我的配置中,我有(除其他外):

就像服务器随着时间的推移而降级。状态网页报告没有问题

我的 verne 服务器是大约一个月前从 git 存储库构建的,并在 docker 容器上运行

可能是什么原因?我还能检查什么来找到可能的原因?也许是多样性错误配置?

Tks

0 投票
1 回答
98 浏览

mqtt - 在 MQTT 主题名称中使用 UUID 有何影响?

我正在使用 MQTT 代理进行请求/响应流,我想知道像 VerneMQ 或 Mosquitto 这样的代理是否能很好地处理大量主题。基本上每次我想做一个请求/响应时,我都会发布一个主题,这rpc/{UUID}意味着每个请求都会创建一个新主题,然后在收到响应时取消订阅。这以后会来咬我吗?