Obsah
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
