Definicja #
RabbitMQ to open-source'owy broker wiadomości (message broker) napisany w Erlang, rozwijany od 2007 roku, aktualnie pod patronatem VMware/Broadcom. Implementuje protokół AMQP 0-9-1 oraz obsługuje MQTT, STOMP i inne przez wtyczki.
Kluczowe koncepcje RabbitMQ:
- Producer — komponent wysyłający wiadomości do brokera
- Exchange — punkt wejścia wiadomości; decyduje do jakich kolejek je przekazać (typy: direct, fanout, topic, headers)
- Queue — bufor przechowujący wiadomości czekające na przetworzenie
- Consumer — komponent odbierający i przetwarzający wiadomości
- Binding — reguła łącząca exchange z kolejką przez routing key
- Virtual Host — logiczna izolacja zasobów w ramach jednego brokera
RabbitMQ gwarantuje różne poziomy niezawodności dostarczenia wiadomości (at-most-once, at-least-once) oraz obsługuje Dead Letter Queue (DLQ) dla nieprzetworzoych komunikatów.
Zastosowania #
RabbitMQ jest stosowany wszędzie, gdzie potrzebna jest asynchroniczna komunikacja:
- Asynchroniczne przetwarzanie zadań: wysyłka emaili, generowanie raportów, konwersja plików
- Architektura mikroserwisów — luźne powiązanie (loose coupling) komponentów systemu
- Load leveling — buforowanie skokowego ruchu przed wolniejszymi konsumentami
- Event-driven architecture — propagacja zdarzeń domenowych między serwisami
- Systemy kolejkowania zamówień, powiadomień i przetwarzania płatności
Ścieżka nauki #
Przed nauką RabbitMQ warto znać podstawy architektury aplikacji webowych i pojęcia takie jak asynchroniczność.
Zacznij od:
- Koncepcja message brokera — producent, konsument, kolejka
- Instalacja RabbitMQ przez Docker i konfiguracja Management UI
- Pierwsze przykłady: publish/subscribe, work queues w wybranym języku (Python, Java, C#)
Następnie opanuj:
- Typy exchange: direct, fanout, topic — kiedy używać każdego
- Potwierdzenia wiadomości (acks), DLQ i obsługa błędów
- Trwałość wiadomości (persistent messages, durable queues)
- Clustering i high availability w środowiskach produkcyjnych
- Alternatywy: Apache Kafka (streaming), Azure Service Bus, AWS SQS
FAQ #
- Czym różni się RabbitMQ od Apache Kafka?
- RabbitMQ to tradycyjny broker wiadomości (push-based, krótkotrwałe wiadomości), Kafka to platforma streamingowa (pull-based, długotrwałe przechowywanie zdarzeń). RabbitMQ lepiej sprawdza się w task queues, Kafka w event streaming i analityce.
- Ile zarabia inżynier znający RabbitMQ?
- Znajomość RabbitMQ jest zwykle częścią szerszego profilu backend/DevOps. Inżynier backend z doświadczeniem w brokerach wiadomości zarabia w Polsce od 12 000 do 25 000 zł brutto miesięcznie.
- Czy RabbitMQ jest darmowy?
- Tak, RabbitMQ jest open source i darmowy. Dostępna jest też komercyjna wersja CloudAMQP (hosting w chmurze) z planami od darmowego do enterprise.
- Jak długo uczyć się RabbitMQ?
- Podstawy działania kolejek i pierwszych integracji można opanować w 1–2 tygodnie. Zaawansowana konfiguracja klastrów i strategii HA wymaga kilku tygodni praktyki.