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í