Protocols and implementations

Protocols and implementations #

AMQP #

AMQP
**[AMQP](https://www.amqp.org/)**, or Advanced Message Queuing Protocol, is a standardized messaging protocol designed for exchanging messages between applications or services. It enables reliable communication across different platforms and languages, facilitating the building of distributed systems. AMQP defines a set of rules and formats for message queuing, ensuring interoperability and scalability in complex network environments. Some of the most commonly used AMQP products include RabbitMQ, Apache Qpid, ActiveMQ and others.
FeatureProtocol specifics
Protocol nameamqp
ChannelExchange (outgoing) / Queue (incoming)
ServerAMQP broker
EnvelopeAMQP Message

Protocol bindings are described in https://github.com/asyncapi/bindings/tree/v3.0.0/amqp/README.md

Apache Kafka #

Apache Kafka
**[Apache Kafka](https://kafka.apache.org/)** is a distributed streaming platform that allows efficient process large volumes of real-time data. It enables applications to publish, subscribe to, store, and process streams of records in a fault-tolerant and scalable manner. Kafka is widely used for building real-time data pipelines, streaming analytics, and event-driven architectures.
FeatureProtocol specifics
Protocol namekafka
ChannelTopic
ServerKafka broker
EnvelopeKafka Message

Protocol bindings are described in https://github.com/asyncapi/bindings/tree/v3.0.0/kafka/README.md

HTTP #

HTTP
**[HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP)**, or Hypertext Transfer Protocol, is an application-layer protocol for transmitting hypermedia documents, such as HTML. It is the foundation of data communication on the World Wide Web and is used to exchange information between clients and servers. HTTP follows a request-response model, where clients send requests to servers and servers respond with messages. It supports various methods, such as GET, POST, PUT, DELETE, and others, to perform different actions on resources. Some of the most popular HTTP servers include Apache HTTP Server, Nginx, Microsoft IIS, and others.
FeatureProtocol specifics
Protocol namehttp
ChannelHTTP route
ServerHTTP server
EnvelopeHTTP request/response

Protocol bindings are described in https://github.com/asyncapi/bindings/tree/v3.0.0/http/README.md

IP RAW sockets #

IP RAW sockets
**[IP RAW sockets](https://en.wikipedia.org/wiki/Raw_socket)**, provide a way to send and receive data at the Internet Protocol (IP) level. They allow you to bypass the standard TCP/IP stack and interact directly with the network layer. RAW sockets are used for low-level network operations, such as network scanning, packet crafting, and protocol development. They are commonly used by network administrators, security professionals, and developers to perform advanced network tasks.
**IP RAW sockets** are not described in the AsyncAPI specification. But the specification permits the use of custom protocols, and raw sockets can be used in some applications, so they are supported by `go-asyncapi`.
FeatureProtocol specifics
Protocol nameip
ChannelIP peers pair info
ServerIP peer
EnvelopeIP packet

Bindings #

Server Bindings #

Does not support any server bindings.

Channel Bindings #

Does not support any channel bindings.

Operation Bindings #

Does not support any operation bindings.

Message Bindings #

Does not support any message bindings.

MQTT #

MQTT
**[MQTT](https://mqtt.org/)**, or Message Queuing Telemetry Transport, is a lightweight messaging protocol designed for constrained devices and low-bandwidth, high-latency, or unreliable networks. It is widely used in the Internet of Things (IoT) and mobile applications to enable communication between devices and servers. MQTT follows a publish-subscribe model, where clients publish messages to topics and subscribe to receive messages from topics. It is known for its simplicity, efficiency, and reliability, making it an ideal choice for IoT applications and other scenarios with limited resources. Some of the most popular MQTT brokers include Mosquitto, HiveMQ, EMQ X and others.
FeatureProtocol specifics
Protocol namemqtt
ChannelTopic
ServerMQTT broker
EnvelopeMQTT Message

Protocol bindings are described in https://github.com/asyncapi/bindings/tree/v3.0.0/mqtt/README.md

Redis #

Redis
**[Redis](https://redis.io/)** is an open-source, in-memory data structure store that can be used as a database, cache, and message broker. It supports various data structures such as strings, hashes, lists, sets, sorted sets, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis is known for its high performance, scalability, and versatility, making it a popular choice for real-time applications, caching, and message queuing.
FeatureProtocol specifics
Protocol nameredis
ChannelServer connection
ServerRedis server
EnvelopeRedis Message

Protocol bindings are described in https://github.com/asyncapi/bindings/tree/v3.0.0/redis/README.md

TCP #

TCP
**[TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol)** (Transmission Control Protocol) is a core protocol of the Internet Protocol Suite, responsible for establishing and maintaining connections between devices on a network. It ensures reliable, ordered, and error-checked delivery of data packets over IP networks.
**TCP** is not described in the AsyncAPI specification. But the specification permits the use of custom protocols, and pure TCP can be used in many applications, so it is supported by `go-asyncapi`.
FeatureProtocol specifics
Protocol nametcp
ChannelConnection
ServerTCP peer
EnvelopeTCP packet

Bindings #

Server bindings #

Does not support any server bindings.

Channel bindings #

Does not support any channel bindings.

Operation bindings #

Does not support any operation bindings.

Message bindings #

Does not support any message bindings

UDP #

UDP
**[UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol)** (User Datagram Protocol) is a connectionless protocol that sends data packets, called datagrams, over the network without establishing a connection. It is faster and more efficient than TCP but does not guarantee the delivery of packets. It is used in applications where speed is more important than reliability, such as online games, video streaming, and voice over IP (VoIP).
**UDP** is not described in the AsyncAPI specification. But the specification permits the use of custom protocols, and pure UDP can be used in many applications, so it is supported by `go-asyncapi`.
FeatureProtocol specifics
Protocol nameudp
ChannelUDP peers pair info
ServerUDP peer
EnvelopeUDP datagram

Bindings #

Server bindings #

Does not support any server bindings.

Channel bindings #

Does not support any channel bindings.

Operation bindings #

Does not support any operation bindings.

Message bindings #

Does not support any message bindings.

WebSocket #

WebSocket
**[WebSocket](https://en.wikipedia.org/wiki/WebSocket)** is a communication protocol that provides full-duplex communication channels over a single TCP connection. It is widely used in web applications to enable real-time communication between clients and servers. WebSocket allows for bidirectional communication, low latency, and efficient data transfer, making it an ideal choice for interactive applications, online games, chat applications, and other scenarios that require real-time updates. WebSocket is supported by most modern web browsers and servers, and it is commonly used in conjunction with HTTP to establish a persistent connection between clients and servers.
FeatureProtocol specifics
Protocol namews
ChannelConnection
ServerWebsocket server
EnvelopeWebsocket Message

Protocol bindings are described in https://github.com/asyncapi/bindings/tree/v3.0.0/websockets/README.md