Is it possible to add Azure Service Bus to queue Cloud to Device messages? When I receive messages I have to be sure that all messages are in the same order that they came to IoTHub. I couldn't find if standard queue in IoTHub provides it. Second reason why I want to use ServiceBus is also longer expiration time, IoTHub provides only 48 hours for message. I know that I can easily use ServiceBus in DeviceMessages by adding endpoint and route in IoTHub configuration, but what with C2D messages?
1 Answers
Per my experience, it's possible to use Azure Service Bus Queue for communication with C2D messages. But, Azure Service Bus only support AMQP & HTTP protocol for most languages, so it's just suitable for some devices which have better performance, such as RaspberryPi/DragonBoard, etc. But the AMQP or HTTP protocol is too heavy & complex for more little devices like Arduino.
However, Azure IoTHub support MQTT protocol which be so thin & simple & fast for devices, and cost less performance.
Answer for your second question, you can integrate Azure Stream Analytics & Azure Storage services (such as Table Storage/DocumentDB/Data Lake) with IoTHub to store all messages for data persistence. Then, don't worry about the message expiration time, you can retrieve any data which be transmited & stored by Stream Analytics, in anytime & anywhere.
As references, please see the below links to know what & how.
- Get started with Azure Stream Analytics to process data from IoT devices
- Build an IoT solution by using Stream Analytics
- Stream Analytics outputs: Options for storage, analysis
Hope it helps. Any concern, please feel free to let me know.

- 23,476
- 4
- 25
- 43