rabbitmq
Obsah
RabbitMQ
RabbitMQ je softwarový prostředník pro zasílání zpráv (Message Broker). Jeho hlavním úkolem je přijímat zprávy od jedné aplikace (Producer) a doručovat je dalším aplikacím (Consumer).
Funguje jako „poštovní schránka“: když aplikace odešle zprávu, RabbitMQ ji bezpečně uloží do fronty a zajistí její doručení, i když je cílová aplikace momentálně zaneprázdněná nebo offline.
Základní architektura
RabbitMQ využívá protokol AMQP (Advanced Message Queuing Protocol). Komunikace probíhá přes tyto klíčové prvky:
- Producer: Aplikace, která zprávy odesílá.
- Exchange: „Ústředna“, která přijímá zprávy od Producera a podle pravidel (Routing Keys) je směruje do správných front.
- Queue (Fronta): Vyrovnávací paměť, kde zprávy čekají, dokud si je nevyzvedne příjemce.
- Consumer: Aplikace, která zprávy zpracovává.
Typy směrování (Exchange Types)
RabbitMQ je unikátní svou flexibilitou v tom, jak zprávy rozděluje:
- Direct: Zpráva jde přesně do té fronty, která má odpovídající směrovací klíč.
- Fanout: Zpráva je zkopírována do všech front, které jsou k exchange připojeny (vhodné pro oznámení/broadcast).
- Topic: Zprávy jsou směrovány na základě vzorů (např. klíč `stock.usd.*` doručí zprávy do front sledujících akcie v dolarech).
- Headers: Směrování probíhá na základě atributů v hlavičce zprávy.
Hlavní výhody použití
- Asynchronní zpracování: Aplikace nemusí čekat na dokončení úkolu. Webový server může okamžitě odpovědět uživateli a náročný úkol (např. generování PDF) nechat „na později“ na pozadí.
- Škálovatelnost: Pokud fronta roste příliš rychle, stačí přidat další Consumery (pracovníky), kteří budou zprávy zpracovávat paralelně.
- Odolnost (Durability): RabbitMQ umí zprávy ukládat na disk. Pokud server spadne, po restartu zprávy ve frontě stále zůstanou.
- Oddělení systémů (Decoupling): Aplikace o sobě nemusí vědět. Stačí, když obě umí komunikovat s RabbitMQ.
Srovnání: RabbitMQ vs. Apache Kafka
| Vlastnost | RabbitMQ | Apache Kafka |
|---|---|---|
| Typ | Tradiční Message Broker. | Distribuovaná streaming platforma. |
| Způsob práce | Zpráva se po doručení a potvrzení smaže. | Zprávy zůstávají uloženy (log) a lze je číst opakovaně. |
| Priorita | Bohaté možnosti směrování a prioritizace. | Extrémní propustnost dat a historická analýza. |
| Použití | Komplexní business logika, e-commerce, úkoly na pozadí. | Big Data, real-time analytika, sledování kliknutí (telemetrie). |
Příklady z praxe
- E-shopy: Po kliknutí na „Koupit“ se do RabbitMQ pošle zpráva. Jeden Consumer pošle potvrzovací e-mail, druhý zarezervuje zboží ve skladu a třetí připraví podklady pro dopravce.
- Microservices: Komunikace mezi desítkami malých služeb, které se navzájem neblokují.
Poznámka pro vývojáře: RabbitMQ je napsán v jazyce Erlang, což mu propůjčuje neuvěřitelnou stabilitu a schopnost zvládat tisíce souběžných spojení s minimální režií.
— Viz také: Mikroslužby, AMQP, Apache Kafka, Asynchronní zpracování
rabbitmq.txt · Poslední úprava: autor: admin
