使用Paho客户端的同步MQTT通信

时间:2017-08-01 04:35:58

标签: mqtt paho

我有一个场景,移动应用程序调用我的应用程序托管的其他API。在这个过程中,我需要通过MQTT向下游系统发送消息,并等到我得到该消息的响应。然后我回复了移动应用程序。

这里的挑战是,MQTT上的消息传递是异步的。所以我收到的消息将在不同的线程(一些监听器类,监听messageArrived())。如何回到调用http线程?

Paho库是否支持同步通信?像我发送消息,打开一些主题并等待它直到收到一些消息或超时?

1 个答案:

答案 0 :(得分:-1)

MQTT本质上是异步的,所有Pub / Sub实现都是异步的。在协议级别没有回复消息的概念,你无法知道你是否会得到一个已发布消息的响应(或者你可能得到很多),因为你不知道是否有一个订阅您发布的主题。

可以构建一个以这种方式工作的系统,但是您需要维护所有正在进行的请求的状态机,实施合理的超时策略并找出如果您收到多个响应该怎么做。

你还没有提到你正在使用哪个不同的Paho库,但是我从方法名称猜测Java,但是不知道你正在使用什么样的HTTP框架以及其他一些我不会建议的因素一个解决方案,特别是因为它将涉及大量的轮询和同步。

移动应用程序无法直接发布和订阅MQTT主题有什么理由吗?这将消除对此的需要。