将 MQTT 消息与 Publisher 的 clienID 连接

Posted

技术标签:

【中文标题】将 MQTT 消息与 Publisher 的 clienID 连接【英文标题】:Connect MQTT Message with clienID of Publisher 【发布时间】:2021-06-19 13:58:08 【问题描述】:

我想将 MQTT 数据存储在 mysql 数据库中,并希望存储客户端 ID、主题和消息内容。

对于某些设备,我无法控制主题或消息语法,因此无法将客户端 ID 附加到消息或在主题中添加客户端 ID。

有可能这样做吗?

也许发布的消息可以自动创建带有客户端 ID 的主题?

我看到 mosquitto 在 server.log 中记录了没有内容的客户端 ID,在客户端记录了没有客户端 ID 的内容......是否可以链接这些?

或者也许已经有一个 MQTT 代理可以做到这一点?

如果有人能在这方面给我一些建议,那就太好了。

【问题讨论】:

【参考方案1】:

您的要求超出了规范(Client Identifier 不包含在传递给订阅者的消息中,它仅“将客户端识别到服务器”)。因此,如果经纪人支持这一点,我会感到惊讶;但是,对于允许您连接到发布流程的代理(例如verne),将您想要的信息转储到数据库应该相对容易(或者,如果 QOS+1,您可以连接到存储代码)。

如果您想将信息(客户端 ID)作为消息的一部分传递,那么您可能需要考虑使用 MQTT v5 进行传递。 v5 包括对 properties 的支持,它提供了一种在消息中添加额外数据而无需触及发布负载的方法。

【讨论】:

以上是关于将 MQTT 消息与 Publisher 的 clienID 连接的主要内容,如果未能解决你的问题,请参考以下文章

Android Mqtt 消息推送使用

Redis发布订阅和Stream

Kafka消息中间件(Kafka与MQTT区别)

MQTT-QoS与协议流程

MQTT消息框架paho-mqtt与emqx安装部署与启动,python

千万级车联网 MQTT 消息平台架构设计