如何在MQTT中实现请求?

问题描述 投票:0回答:1

有一个物联网服务器仅支持MQTT协议,管理员共享了以下代码,以便从服务器获取数据

mosquitto_sub -v -t "app/26" -h broker.example.com -p 1883  -u "dir1-mqtt" -P "5sp-1001-tech

实际上我不知道如何处理。

如何将请求发送到目标并以最快的方式获得响应?

mqtt iot mosquitto
1个回答
2
投票

简短的答案是,您没有。您的MQTT模型错误。

MQTT不是请求/响应模型*,例如像HTTP一样,它是一种发布/订阅(pub / sub)消息传递模型。在发布/订阅模型中,数据生产者将消息发布到某个主题,该主题可能有0到N个订阅者,发布者无法知道有多少个订阅者(而且实际上应该不在乎)。

这意味着接收数据所需要做的就是订阅所提供的主题(在本例中为app/26,当有新数据时,它将被发送到您的客户端。

[有一些选项可以确保您订阅时始终得到最新发布的消息。这是通过生产客户端在消息头中设置保留位来完成的,这将使代理保留此消息,并在订阅主题时将其首先传递给所有客户端。在该主题上设置有该位的下一条消息将替换前一条消息。但这是在客户端生成数据的控制中,而不是在消费者的控制中。

*您可以使用单独的主题来实现请求/响应,MQTT v5具有一个额外的标头来指定响应主题。但是,要求生成数据的客户端希望收到有关给定主题的请求,并且能够对提供的主题进行回复。

© www.soinside.com 2019 - 2024. All rights reserved.