我正在尝试运行MQTT代理,我想存储已发布的数据,但我需要知道是哪个用户发送了消息,这样我就可以为每个用户存储有效负载,并在以后对其进行研究。问题是,当两个不同的用户试图发布同一主题的消息时,我无法判断它是谁的数据。有办法找出消息的发布者吗?我正在使用Mosquito btw.
简短的回答,你不会。
MQTT消息不包含任何关于发送消息的用户或客户端的信息,除非您选择在消息中对其进行编码(作为v3.x的有效负载的一部分,或者作为v5.0的标头属性的一部分(
更长的答案:
一些MQTT代理具有插件API,可以允许您访问消息的更多元数据。您可以编写一个插件,它将接收消息+元数据,然后存储它们。上次我看的时候,mosquitto的插件API只用于编写身份验证插件,而不允许访问消息本身。但不同的经纪人可能会允许这样做。