Uživatelské nástroje

Nástroje pro tento web


rabbitmq

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

  1. 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.
  2. 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