Azure云中的MQTT代理

时间:2015-11-13 13:05:11

标签: azure cloud mqtt iot

我有一个后端设备,MQTT客户端连接到opensource MQTT代理(Mosquitto)。另一方面,我有许多前端设备(PC,平板电脑,移动),GUI应用程序也连接到代理。所以这里Mosquitto作为后端设备和前端设备之间的通信点,只是在它们之间转发消息。有时传输的数据量可能非常高(例如1 MB /分钟)。

一个后端设备+许多前端设备是一个安装。我需要为数千个此类安装同时工作的基础设施做好准备。所以我的服务需要非常可靠。我的公司使用Azure云解决方案,所以我开始学习这个解决方案,我必须承认我有点困惑。我已经读过我需要使用IoT Hub,但它需要MQTT网关才能与MQTT设备对话。另一方面,如果我理解得很好,网关需要在某个VM上运行,所以这里我失去了我的解决方案的可扩展性。我对吗?现在,如果我需要支持100k或500k设备,那么我将需要另一台VM?还有一件事是我需要将所有这些与一些web服务集成(用于管理后端和前端设备),所以我需要webservice和MQTT代理之间的一些连接......

在我开始使用Azure之前,我想,我将简单地启动一个MQTT代理服务,并且神奇地它将是高度可扩展的,并且能够为数千个设备提供服务。

有人能解释我怎么咬这个吗?

2 个答案:

答案 0 :(得分:11)

Azure IoT Hub现在可以本地与MQTT进行对话。不再需要协议网关。 https://azure.microsoft.com/en-us/documentation/articles/iot-hub-mqtt-support/

如果您在最后一小时尝试构建MQTT用户名和密码,这将对您有所帮助: https://github.com/Azure/azure-content/blob/master/articles/iot-hub/iot-hub-devguide.md#example

  

实施例

     

用户名(DeviceId区分大小写):iothubname.azure-devices.net/DeviceId

     

密码(使用设备资源管理器生成SAS):SharedAccessSignature sr=iothubname.azure-devices.net%2fdevices%2fDeviceId&sig=kPszxZZZZZZZZZZZZZZZZZAhLT%2bV7o%3d&se=1487709501

在Windows上使用 Paho MQTT.fx 进行测试。我无法通过 mosquitto 对其进行身份验证,并且我已经付出了合理的努力,甚至尝试使用 stunnel ,以防mosquitto的TLS支持不是&#切断它。 Mosquitto可能无法正确处理长密码或其他类似的东西。它会引发身份验证错误。逃避%&没有帮助。

如果有人让Mosquitto与Azure IoT Hub合作,请睁开眼睛。

答案 1 :(得分:3)

今天,Azure中没有对MQTT协议的官方支持,只有支持AMQP和HTTP的IoT Hub的公开预览。 为了将MQTT设备连接到IoT Hub,Microsoft提供了一个"框架"名为IoT协议网关(https://github.com/Azure/azure-iot-protocol-gateway),用于在MQTT和AMQP之间执行协议转换。 物联网协议网关可以作为Azure工作者角色安装在本地或云中。在第二种方案中,您具有Azure提供的可扩展性,并且与工作者角色实例相关。 由于IoT Hub(仍在公开预览中)和物联网协议网关本身的寿命很短,因此该解决方案绝对是新的。

您的第一个解决方案基于使用您应安装在VM中的第三方MQTT代理(如mosquitto)。 AFAIK mosquitto不像HiveMQ经纪人那样支持群集(参见另一个回复:Cluster forming with Mosquitto broker)。

关于Web服务和MQTT代理之间的连接的最后一件事。 在这种情况下,Web服务应使用您需要包含在Web服务本身内的MQTT客户端将调用(从前端)转换为MQTT代理上的已发布消息。

即使使用AWS,以下链接也可能有用: https://groups.google.com/forum/#!topic/mqtt/19jqofoPLro

保罗。