0
votes

I want to connect to the Microsoft Azure IoT Hub with Java to implement a device-gateway with some kind of identity translation. As I don't want to use the proprietary Azure SDK, I'm looking for a suitable AMQP-client-library. I made first steps with the very high-level Vert.X AMQP client and was able to connect to the IoT Hub with SASL and exchange messages. But as a per-device-authentication is required, I came to the libraries limits fast, as sessions and links are not supported.

There are other AMQP-client-libraries like the parent-library of the Vert.X AMQP Client, Vert.X Proton, and of course the most detailed AMQP-client-implementations Apache Qpid Proton-J and Qpid JMS. The question which arises now is which library too choose for my usecase? Currently I can't answer it myself satisfactorily, as the available online-resources (documentation and examples) to these libaries itself and the external AMQP-integration to the IoT Hub with other libraries then the Azure SDK are very rare. Apache Qpid seems to be the most powerful but also the most complex one. Vert.X Proton as an easier to use wrapper also supports sessions and links, but probably still doesn't support all required AMQP-features to connect to a IoT hub? It's hard to get an overview on the requirements.

1

1 Answers

0
votes

The Azure IoT SDKs are fully open source under MIT license, so not proprietary per se. The Java SDK depends on Apache qpid Proton J and adds a light convinience layer to abstract the protocol itself. Allowing you to take full advantage of all the Azure IoT Hub features. I'm genuinely curious why you would prefer not to use an open source SDK that is supposed to make your life easier. Also curious to why you prefer AMQP rather than MQTT. Once again these are purely genuine questions as I am trying to understand better our developers needs and wants. Also in case you have not found it there is a doc that explains how IoT Hub uses AMQP here: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-amqp-support