10

我们计划使用 MQTT 将消息从我们的服务器传递到我们决定使用开源服务器 mosquitto 的 android 设备。

在大多数情况下,这已经足够了。(发布/订阅)但我们有客户端需要发送参数并从服务器获取响应的情况。我知道直接的方法是使用 Http(例如 Servlet)。但是我们可以使用 MQTT 来实现这一点,因为这意味着用户的带宽消耗会降低吗?

4

5 回答 5

9

是的,它只需要仔细设计您的主题结构。作为一个非常简单的示例,您可以发布control/<client id>/request和订阅control/<client id>/response

于 2013-04-10T07:55:09.123 回答
6

从 MQTT 版本 5 开始,这是可能的。该规范具有指定的请求/响应模式。

看看这个:https ://stackoverflow.com/a/59916330/1137669

于 2020-02-13T11:10:59.647 回答
4

我建议你看看RabbitMQ 如何处理 RPC。尽管 AMQP 与 MQTT 不同,但仍有相当多的高级继承。

归结为您需要能够使用消息头创建具有相关 id 的临时“回复”队列。或者正如@ralight 所说,为每个客户打开两个队列。为每个客户端打开两个队列的问题当然是排序,因此您必须在内部使用关联 ID 和缓冲区和路由(如果您的应用程序是同步的,则删除直到找到关联 ID)。

于 2013-04-10T13:45:37.290 回答
1

你也可以用 xargs 完成同样的事情。

这是一个shell脚本作为示例:

mqtt_eg_link.sh

d=$(date +%Y-%m-%d)
mosquitto_pub -h <your host> -p 1880 -t status/ghost/log -m "$d >> eg listener running"
mosquitto_sub -h <your host> -p 1880 -t ghost | xargs -t -I {} cmd.exe /c eg.bat {}
于 2020-10-27T01:45:40.577 回答
0

您应该使用等待/通知将发布/订阅转移到 Dubbo 框架 DefaultFuture 中使用的请求/响应,

于 2021-08-12T13:37:36.277 回答