AMQP (Advanced Message Queuing Protocol)

AMQP je otevřený internetový protokol aplikační vrstvy určený pro asynchronní zasílání zpráv. Na rozdíl od HTTP, které je primárně typu požadavek-odpověď, AMQP se zaměřuje na spolehlivé doručení zpráv, jejich řazení do front a zajištění bezpečnosti.

Nejznámější implementací tohoto protokolu je RabbitMQ.

Klíčové vlastnosti

Interoperabilita: Umožňuje vzájemnou komunikaci systémů napsaných v různých programovacích jazycích.

Spolehlivost: Podporuje potvrzování zpráv (Acknowledgements). Pokud příjemce zprávu nepotvrdí (např. kvůli pádu aplikace), AMQP zajistí její opětovné doručení.

Bezpečnost: Protokol podporuje autentizaci (SASL) a šifrování (TLS).

Flexibilní směrování: Umožňuje složité scénáře distribuce zpráv (point-to-point, publish-subscribe).

Model AMQP (Entity)

AMQP definuje tři základní komponenty, které zajišťují cestu zprávy od odesílatele k příjemci:

1. Exchange (Ústředna)

Místo, kam odesílatel (Producer) posílá své zprávy. Exchange zprávu přijme a na základě definovaných pravidel (Bindings) ji pošle do jedné nebo více front.

2. Queue (Fronta)

Úložiště, kde zprávy čekají, dokud si je nevyzvedne příjemce (Consumer). Fronta může být dočasná nebo perzistentní (zůstane i po restartu serveru).

3. Binding (Vazba)

Pravidlo, které říká: „Zprávy z této ústředny s tímto klíčem patří do této konkrétní fronty.“

Verze protokolu: 0-9-1 vs. 1.0

V praxi se nejčastěji setkáte se dvěma verzemi, které jsou technicky velmi odlišné:

Verze	Charakteristika
AMQP 0-9-1	Používá ji RabbitMQ. Definuje přesnou architekturu (Exchanges, Queues). Je velmi populární pro svou jednoduchost a bohaté funkce směrování.
AMQP 1.0	ISO standard (používají např. Azure Service Bus nebo Apache Qpid). Je to čistě transportní protokol, který nediktuje vnitřní architekturu brokera, což zvyšuje flexibilitu na úkor složitosti.

Srovnání s ostatními protokoly

Protokol	Zaměření	Hlavní rozdíl
HTTP	Webové služby	Synchronní (čeká se na odpověď).
MQTT	IoT (Internet věcí)	Extrémně lehký, ale méně funkcí pro komplexní směrování.
AMQP	Enterprise Messaging	Robustní, bezpečné, podporuje transakce a složitou logiku.

Výhody pro vývojáře

Oddělení (Decoupling): Odesílatel nemusí vědět, kdo je příjemce, ani jestli je právě online.

Vyrovnávání zátěže: Pokud do fronty přichází moc zpráv, stačí spustit více instancí příjemce.

Odolnost proti chybám: Pokud spadne server s aplikací, zprávy zůstanou bezpečně uloženy v AMQP brokeru.

— Viz také: RabbitMQ, Mikroslužby, Asynchronní zpracování, MQTT