Messaging Communication ======================= .. toctree:: :maxdepth: 1 :hidden: :includehidden: AMQP gRPC MQTT XMPP These protocols facilitate messaging and communication between distributed systems, supporting various patterns like publish/subscribe, remote procedure calls, and instant messaging. .. list-table:: :widths: 20 65 20 :header-rows: 1 * - Protocol - Description - Use Case * - AMQP (Advanced Message Queuing Protocol) - Open standard protocol for message-oriented middleware. *Supports reliable, secure messaging with queuing and routing.* - Enterprise messaging, integration, and brokered communication * - gRPC (Google Remote Procedure Call) - High-performance RPC framework using HTTP/2 and Protocol Buffers. *Enables efficient, strongly typed client-server communication.* - Microservices communication and API design * - MQTT (Message Queuing Telemetry Transport) - Lightweight publish/subscribe messaging protocol. *Designed for constrained devices and unreliable networks.* - IoT device communication and telemetry * - XMPP (Extensible Messaging and Presence Protocol) - XML-based protocol for messaging, presence, and contact list management. *Used for instant messaging and real-time communication.* - Chat applications, presence services, and real-time collaboration .. tab-set:: .. tab-item:: AMQP (Advanced Message Queuing Protocol) **RFC:** RFC 8637 **Main Features:** - Open standard for message-oriented middleware - Provides reliable queuing, routing, security, and transactions - Uses exchanges and bindings to flexibly route messages - Supports guaranteed delivery, persistence, and acknowledgments **Use Cases:** - Enterprise application integration - Brokered messaging between microservices - Reliable communication in distributed systems **Alternative Protocols:** - MQTT – Simpler, lightweight option for constrained environments - Kafka – For event streaming and log-based processing .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: What You Will Learn in This Section **Let us learn more about AMQP:** * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`AMQP Version&RFC Details ` * :ref:`AMQP Basic Setup on Ubuntu using IPv4 ` * :ref:`AMQP Basic Setup on Ubuntu using IPv6 ` * :ref:`AMQP Protocol Packet Details ` * :ref:`AMQP Usecases ` * :ref:`AMQP Basic Features ` * :ref:`AMQP Feature : Reliable Messaging ` * :ref:`AMQP Feature : Interoperability ` * :ref:`AMQP Feature : Message Queuing ` * :ref:`AMQP Feature : Routing Flexibility ` * :ref:`AMQP Feature : Transactional Messaging ` * :ref:`AMQP Feature : Flow Control ` * :ref:`AMQP Feature : Security ` * :ref:`AMQP Feature : Multi-Channel Communication ` * :ref:`AMQP Feature : Publisher Confirms ` * :ref:`AMQP Feature : Extensibility ` * :ref:`Reference links ` .. button-link:: ./AMQP.html :color: primary :shadow: :expand: Jump to "AMQP" .. tab-set:: .. tab-item:: gRPC (Google Remote Procedure Call) **Spec:** https://grpc.io/docs/ **Transport:** HTTP/2 **IDL:** Protocol Buffers **Main Features:** - High-performance RPC using HTTP/2 and Protobuf - Supports streaming (client, server, bi-directional) - Strongly typed interfaces with cross-language support - Ideal for low-latency, high-throughput communication **Use Cases:** - Microservice-to-microservice communication - API development for modern cloud apps - Backend communication in containerized systems **Alternative Protocols:** - REST over HTTP – Widely used but less efficient - Thrift – Similar RPC protocol from Apache - SOAP – Heavier, XML-based RPC mechanism .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: What You Will Learn in This Section **Let us learn more about gRPC:** * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`gRPC Version&RFC Details ` * :ref:`gRPC Basic Setup on Ubuntu using IPv4 ` * :ref:`gRPC Basic Setup on Ubuntu using IPv6 ` * :ref:`gRPC Protocol Packet Details ` * :ref:`gRPC Usecases ` * :ref:`gRPC Basic Features ` * :ref:`gRPC Feature : Protocol Buffers (Protobuf) ` * :ref:`gRPC Feature : HTTP/2 Transport ` * :ref:`gRPC Feature : Cross-Language Support ` * :ref:`gRPC Feature : Streaming Support ` * :ref:`gRPC Feature : Contract-First API Design ` * :ref:`gRPC Feature : Built-in Authentication ` * :ref:`gRPC Feature : Load Balancing & Retry ` * :ref:`gRPC Feature : Pluggable Architecture ` * :ref:`gRPC Feature : Efficient Binary Format ` * :ref:`gRPC Feature : Error Handling & Status Codes ` * :ref:`Reference links ` .. button-link:: ./gRPC.html :color: primary :shadow: :expand: Jump to "gRPC" .. tab-set:: .. tab-item:: MQTT (Message Queuing Telemetry Transport) **RFC:** RFC 9166 **Main Features:** - Lightweight publish/subscribe messaging protocol - Designed for low-bandwidth, high-latency, or unreliable networks - Provides Quality of Service (QoS) levels for message delivery - Minimal overhead, ideal for embedded or mobile systems **Use Cases:** - IoT telemetry and sensor data exchange - Smart home automation and remote monitoring - Mobile or constrained environments **Alternative Protocols:** - AMQP – For full-featured messaging in enterprise systems - CoAP – Lightweight request/response protocol for IoT .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: What You Will Learn in This Section **Let us learn more about MQTT:** * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`MQTT Version&RFC Details ` * :ref:`MQTT Basic Setup on Ubuntu using IPv4 ` * :ref:`One Publisher and One Subscriber using IPv4 ` * :ref:`Four Publishers and Four Subscribers using IPv4 ` * :ref:`MQTT Basic Setup on Ubuntu using IPv6 ` * :ref:`One Publisher and One Subscriber using IPv6 ` * :ref:`Four Publishers and Four Subscribers using IPv6 ` * :ref:`MQTT Protocol Packet Details ` * :ref:`MQTT Usecases ` * :ref:`MQTT Basic Features ` * :ref:`MQTT Feature : Lightweight Protocol ` * :ref:`MQTT Feature : Publish/Subscribe Model ` * :ref:`MQTT Feature : Quality of Service(QoS) ` * :ref:`MQTT Feature : Retained Messages ` * :ref:`MQTT Feature : Persistent Sessions ` * :ref:`MQTT Feature : Small Code Footprint ` * :ref:`MQTT Feature : Bi-directional Communication ` * :ref:`MQTT Feature : Security via TLS ` * :ref:`MQTT Feature : Extensible with MQTT5.0 ` * :ref:`Reference links ` .. button-link:: ./MQTT.html :color: primary :shadow: :expand: Jump to "MQTT" .. tab-set:: .. tab-item:: XMPP (Extensible Messaging and Presence Protocol) **RFCs:** RFC 6120, RFC 6121 **Main Features:** - XML-based protocol for messaging and presence - Supports real-time chat, contact list management, and federation - Highly extensible via XMPP Extension Protocols (XEPs) - Decentralized and open standard **Use Cases:** - Instant messaging and chat apps - Presence-aware communication - Multi-party chat rooms and conferencing **Alternative Protocols:** - SIP/SIMPLE – Used for signaling and instant messaging - Matrix – Modern decentralized communication protocol .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: What You Will Learn in This Section **Let us learn more about XMPP:** * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`XMPP Version&RFC Details ` * :ref:`XMPP Basic Setup on Ubuntu using IPv4 ` * :ref:`XMPP Basic Setup on Ubuntu using IPv6 ` * :ref:`XMPP Protocol Packet Details ` * :ref:`XMPP Usecases ` * :ref:`XMPP Basic Features ` * :ref:`XMPP Feature : XML Based Protocol ` * :ref:`XMPP Feature : Real Time Messaging ` * :ref:`XMPP Feature : Presence Information ` * :ref:`XMPP Feature : Federated Architecture ` * :ref:`XMPP Feature : Extensiblity via XEPs ` * :ref:`XMPP Feature : Security Support ` * :ref:`XMPP Feature : Multiuser chat ` * :ref:`XMPP Feature : offline messaging ` * :ref:`XMPP Feature : Push Notifications ` * :ref:`XMPP Feature : cross platform compatibility ` * :ref:`Reference links ` .. button-link:: ./XMPP.html :color: primary :shadow: :expand: Jump to "XMPP"