RabbitMQ je message broker implementující protokol AMQP (Advanced Message Queuing Protocol). Umožňuje komunikaci mezi aplikacemi nebo jejich komponentami. RabbitMQ umožňuje oddělení producentů a konzumentů, což podporuje asynchronní komunikaci.
Hlavní pojmy
Message Broker: Implementuje systém front zpráv.
Exchanges (výměníky): Komponenty odpovědné za směrování zpráv do správných front.
Binding: Spojení mezi výměníkem a frontou, identifikován pomocí binding key.
Routing key: Identifikace jednotlivých zpráv.
Příklad: Posílání zprávy (producent)
Příklad: Příjem zprávy (konzument)
Výhody RabbitMQ
Mezi hlavní výhody RabbitMQ patří:
Oddělení (decoupling): Producenti nemusí čekat na zpracování zpráv, což umožňuje asynchronní provádění úloh.
Škálování: RabbitMQ usnadňuje přidávání nových producentů nebo konzumentů, což podporuje horizontální škálování.
Výkon: Broker může běžet na samostatném zařízení, což zlepšuje výkon.
Typy výměníků (Exchanges)
Výměníky definují, jakým způsobem jsou zprávy směrovány do front:
Direct: Směřuje zprávy do konkrétní fronty na základě kompletní shody binding key a routing key.
Fanout: Rozesílá všechny zprávy do všech front napojených na výměník.
Topic: Směruje zprávy do front na základě částečné shody mezi binding key a routing key (pattern matching).
Header: Směruje zprávy podle hodnot v hlavičkách zpráv.
Příklad: Implementace Fanout Exchange
Funkce a vlastnosti
Spolehlivost: Možnost zajištění, že se zprávy neztratí ani při výpadcích.
Flexibilita: Podpora více protokolů, například AMQP, MQTT nebo STOMP.
Škálovatelnost: Jednoduché přidávání producentů, konzumentů nebo zvýšení výkonu systému.
Pluggability: Možnost snadného rozšíření funkcionality pomocí pluginů.
Příklad: Spolehlivost zpráv
Využití RabbitMQ
RabbitMQ nachází využití v různých scénářích:
Asynchronní zpracování úloh: Oddělení umožňuje producentům odesílat úlohy bez čekání na jejich dokončení, což dovoluje zpracovávání úloh, které jsou časově náročné nebo nevyžadují okamžité zpracování.
Load balancing: Rozložení zátěže mezi více konzumentů.
Zpracování dat v reálném čase: Užitečné pro monitoring, logování a další.