While working on IoT projects, a lot of our customers ask us to recommend the open protocol to be used between the remote devices and the cloud-based IoT platform - e.g. MQTT or AMQP.
First and foremost, it is important to note that both MQTT and AMQP operate on top of TCP/IP and hence can use TLS to encrypt the transport layer. Jotting down some of the important characteristics of each protocol to help you make a decision.
MQTT
First and foremost, it is important to note that both MQTT and AMQP operate on top of TCP/IP and hence can use TLS to encrypt the transport layer. Jotting down some of the important characteristics of each protocol to help you make a decision.
MQTT
- Very low resource (CPU/memory) footprint - suitable to constrained IoT devices.
- Support for pub-sub model (topics), but NO support for peer-to-peer messaging (queues).
- Only supports binary message format. So your JSON strings would need to be converted to bytes by your MQTT client - (be cautious about encoding/decoding especially UTF)
- Does not support advanced messaging features such as transactions, custom message headers, expiration, correlation ID, etc.
AMQP
- Was designed for interoperability between different messaging middleware (MOM).
- Supports advanced features such as reliable queuing, transactions, etc.
- A lot of fine-grained control available to control all the features.
- Useful for preventing vendor lock-in.
Final verdict (recommendation) - Use MQTT for IoT applications and use AMQP for enterprise messaging.
Some good reading links provided below:
https://lists.oasis-open.org/archives/amqp/201202/msg00086/StormMQ_WhitePaper_-_A_Comparison_of_AMQP_and_MQTT.pdf
https://www.linkedin.com/pulse/mqtt-enterprise-matt-pavlovich?articleId=8012630610818408760
Some good reading links provided below:
https://lists.oasis-open.org/archives/amqp/201202/msg00086/StormMQ_WhitePaper_-_A_Comparison_of_AMQP_and_MQTT.pdf
https://www.linkedin.com/pulse/mqtt-enterprise-matt-pavlovich?articleId=8012630610818408760