问题标签 [hivemq]

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

c# - 无法从 Hivemq M2Mqtt C# 客户端向 Google Cloud IoT 发布消息

我已经配置了一个谷歌云物联网项目,并从谷歌云物联网控制台主题页面成功发布了“Hello, World”消息。我也可以查看收到的消息。

现在,在尝试使用 Hivemq M2Mqtt nuget 包在 Visual Studio C# 上运行以下代码时,消息未发布。我观察到以下情况:

  1. Publisher.Connect 返回的代码值为 5
  2. Publisher.Publish 返回的 msgID 值为 1
  3. publisher.MqttMsgPublished 事件未触发

我犯了什么错误?

谢谢。

0 投票
1 回答
239 浏览

google-cloud-platform - 使用 Hive MQTT 客户端而不是 Paho 连接到 Google IoT

我有与使用 paho 客户端连接到 google IoT类似的工作代码

由于我在 Spring Boot 反应式应用程序中,我想使用Hive MQTT Client,但我找不到正确的设置,我一直收到以下错误消息:

我使用的当前代码:

0 投票
1 回答
544 浏览

mqtt - MQTT 如何处理发布者同时发布到同一个主题?

想象一下,我有 3 个发布者,A、B 和 C。

  • 发布者 A 向 SOME/TOPIC 发送消息 FOO、BAZ、SOMETHING
  • 发布者 B 向 SOME/TOPIC 发送消息 FOO, SOMETHING
  • 发布者 C 不向 SOME/TOPIC 发送消息

SOME/TOPIC 的订阅者会收到哪些消息?

我想知道这一点的动机是发布者 A、B 和 C 正在从不可靠的数据源中提取这些消息,他们可能会错过一些消息,因此我有多个发布者发布到同一个主题作为冗余形式。这是个好主意还是坏主意?

0 投票
1 回答
227 浏览

mqtt - MQTT 通配符订阅、背压和 QOS

这更像是一个通用问题,但是在不同的客户端或协议版本甚至服务器版本中可能会有不同的处理方式。

所以我在这里说的是 QOS 2 级订阅。在这种情况下,数据包按顺序处理。并且既然有一个确认协议,这意味着在第一个消息被确认之前无法处理下一个消息?或者它的订购只为接收而维持,而不是为了确认?

如果通过确认施加背压,这与通配符主题有什么关系?那里的“顺序”实际上只是包含主题的个体的真实概念,而不是整个通配符。这是否意味着背压也是按主题处理的,还是基于通配符订阅总数进行维护?

编辑:

所以我用 HiveMQ 和 Misquitto 做了一些测试。这两者都表现出相同的行为:只要您不在 QOS2 数据包上调用回调,整个事情就会停止响应任何事情。它甚至似乎也与通配符无关。

所以作为一个测试我有三个主题:test/1test/2test2/1

test/2消息永远不会得到确认。

我试图对这个问题进行wireshark,看看发生了什么。在我向test/2发送消息后会发生什么,无论主题如何,后续消息都不会发送给通配符订阅者。这表明通配符订阅确实并不真正关心底层主题语义。情况似乎更糟:如果我将通配符订阅分成两个单独的订阅,那么在test/1test/2上,这是完全相同的事情。任何未释放的 QOS > 0 数据包都会阻塞整个连接!所以这似乎并不表明客户端存在直接问题,但已经是与服务器相关的事情。所以我最初的问题又出现了:这是每个规范,还是这只是一个实现的好奇心?

0 投票
1 回答
346 浏览

parallel-processing - 如何使用 HiveMQ mqtt 客户端启用订阅主题/消息的并行消费/处理

我们目前正在从旧版本的 Ecipe Paho MQTT 客户端切换到 1.2 版的 HiveMQ MQTT 客户端。 https://github.com/hivemq/hivemq-mqtt-client

目前正在使用需要消费者函数作为回调的客户端的 Aync 版本。

我们的 MQTT 客户端应用程序之一必须处理/消费许多不同主题的大量消息,并且一条消息的处理不应等待前一条消息完成。我们不确定仅使用一个客户端实例实现消息并行处理的最佳方法是什么。

在上面的文档中有一个可以定义的可选执行器

当没有定义执行器时,AsyncClient 应该如何表现?那么一切都是以阻塞的方式串行处理的吗?不知何故,这似乎违背了用回调定义异步的目的......

在我们的旧实现中,我们使用共享订阅(这是 HiveMQ 3 中的非标准功能,现在是 MQTT 5 的标准功能),客户端的多个实例不断等待相同的主题交替处理它们。

然而,鉴于 HiveMQ 客户端 API(遗憾的是缺少更多解释或示例),我们希望能够提供一种更优雅、更简单的方法来实现与线程池或其他东西的并行处理!

任何帮助表示赞赏!

0 投票
0 回答
47 浏览

java - 如何清理 HiveMQ 消息缓存目录?

我发现这两个文件夹增长得很快,似乎没有办法清理它。

我使用以下属性设置消息(或连接):

HiveMQ 版本:带有 MQTT5 的 HiveMQ CE 2020.2

0 投票
1 回答
143 浏览

websocket - HiveMQ MQTT Websocket - 无法订阅子主题

我有一个代码可以将表单中的任何用户输入订阅到 MQTT 代理。一切正常,数据被发布并显示在代理中。但是,我不能订阅子主题。

这是代码的 MQTT 部分:

如您所见,目标名称是“sssmarthome/”,这是我可以订阅的唯一主题。这是表单代码:

所以每个输入都有自己的子主题。但是,如果我去网站填写表格,这就是我在经纪人那里得到的:

HiveMQ 代理

正如您在图片上看到的,它没有显示子主题的名称,只显示了主要主题。我尝试订阅代理中的子主题,但不会发布任何内容,唯一有效的主题是默认目标名称。知道如何能够订阅主题并在其上发布实际的内容,以及正确的主题和子主题吗?谢谢!

0 投票
2 回答
333 浏览

docker - Docker 从不同的来源拉取不同的架构

我有一个 Dockerfile 可以拉取FROM hivemq/hivemq-ce. 这适用于“标准”平台,但不适用于 Raspberry Pi。因此,我按照官方 HiveMQ 存储库中的教程,直接在 RasPi 上为 arm64 构建了映像,并将其推送到frederikheld/hivemq-ce. FROM如果我将行更改为 .Dockerfile 在 RasPi 上运行良好FROM frederikheld/hivemq-ce

所以现在我的图像可以在不同来源的不同平台上工作。但是我怎样才能让我的 Dockerfile 在所有平台上工作呢?有没有办法从不同的来源为不同的架构提取?

0 投票
2 回答
584 浏览

android - 如何避免订阅同一主题并在 HiveMQ Android 客户端中多次触发回调?

预期行为

我希望有一个回调来收听我订阅的每个主题,每条消息发送一次。我的意思是,我想订阅一个主题 1000 次,但是当收到一条消息时,我只想听一次。

IDK 如果我做错了什么(我猜)。

实际行为

  • 我正在开发一个家庭安全摄像头应用程序。
  • 我有一个我拥有的相机列表。
  • 对于列表中的每台相机,我都会订阅一个主题。
  • 每 30 秒,我更新一次屏幕,并再次为每台相机订阅一个主题。这意味着一个主题可以被多次订阅。
  • 每次我收到有关某个主题的消息时,回调都会触发有关同一主题被订阅多少次的消息。

重现

脚步

  1. 有一个主题相机/123
  2. 使用以下名为subscribeWith的方法订阅主题 N 次
  3. 通过摄像头发送消息/123
  4. 您将收到 N 次消息,因为您订阅了该主题 N 次

复制代码

只是变量

构建 MQTT

连接 MQTT

然后,订阅一个主题 每次我订阅一个主题时,我都会使用这些乐趣

0 投票
3 回答
636 浏览

mqtt - HiveMQ MQTT Client Java:有没有办法检查主题是否与订阅匹配?

如果特定主题提前与另一个主题匹配,是否有内置方法可以使用 hivemq-mqtt-client 检查?

例如,使用主题发布的消息:

publishedTopic= "sensors/sensor1";

订阅的客户:

subscribedTopic = "sensors/#";

有没有类似的东西

?

具体情况:

我在家里经营一个经纪人,几个设备发布不同主题的值。有些像传感器/humi[45],有些像传感器/数据[JSON Payload]。对于我的个人用途,我使用 Java HiveQM MQTT 客户端运行应用程序。一位客户使用 raspberryPi 上的 mosquitto 订阅了相关主题。另一个客户端正在将选定的数据发布到可公开访问的代理。接收新消息不仅会以我处理它的方式处理所有数据,还会触发将接收到的消息发布到公共代理。

我可以

但是做一些事情,比如从我的内部代理订阅“sensor/#”,并“转发”类似“sensor/+”的东西,并让一个库来确定是否使用“sensors/#”接收到某个消息”,将重新发布给公共经纪人,仅限于“传感器/+”是我正在寻找的。

当我订阅“sensors/#”时,HiveMQ mqtt-client 库中的逻辑是否可以被库用户访问?