RabbitMQ jest czymś w rodzaju firmy pocztowej, która jest organizacją złożoną nie tylko z placówek pocztowych, ale i całej infrastruktury służącej do przekazywania wiadomości z jednego miejsca na drugie, od nadawcy do odbiorcy.
W RabbitMQ nadawca zwany jest producentem (ang. producer), odbiorca konsumentem (ang. consumer), a wspomniana firma pocztowa to w dużym uproszczeniu kolejka komunikatów (ang. message queue).
Komunikatem może być dowolny ciąg znaków, zatem mogą to być dane w formacie JSON, pliki zakodowane w formie base64, proste wiadomości tekstowe, czy pojedyncze linie tekstu np. logi serwera czy konkretnej aplikacji.
RabbitMQ gromadzi komunikaty i w zależności od rodzaju kolejki, a także jej konfiguracji - może czekać, aż pojawi się ich odbiorca lub odbiorcy; może przekazywać otagowane komunikaty tylko do odpowiednich konsumentów lub nawet odrzucać je jeśli nikt się po nie nie zjawi.
System RabbitMQ z powodzeniem można nazywać pośrednikiem komunikatów oraz kurierem komunikatów.
Słowo komunikat jest tu użyte celowo zamiast słowa wiadomość z uwagi na przyjęte już w literaturze słownictwo w kontekście systemów kolejkowych.
RabbitMQ jest systemem o otwartym kodzie źródłowym, napisanym w języku Erlang. Język ten został zaprojektowany pod kątem aplikacji współbieżnych uruchamianych w środowisku rozproszonym, gdzie szczególnie ważne są takie cechy jak skalowalność, odporność na awarie i długotrwała praca przy dużej liczbie wątków. Erlang został stworzony w firmie Ericsson jeszcze w latach 80-tych przez Joe Armstronga i jest wykorzystywany w dużej mierze w zastosowaniach telekomunikacyjnych.
System RabbitMQ jako pośrednik komunikatów (ang. message broker) implementuje protokół Advanced Message Queuing Protocol (w skrócie AMQP) będący otwartym standardem opisującym protokół warstwy aplikacji dla oprogramowania pośredniczącego w wymianie komunikatów (ang. Message-Oriented Middleware, w skrócie MOM). Nasz kurier komunikatów obsługuje zarówno AMQP w wersjach 0-8, 0-9, 0-9-1 jak i AMQP 1.0, który znacząco różni się od wersji 0-9-1, od którego jest bardziej rozbudowany.
RabbitMQ natywnie pracuje z protokołem AMQP 0-8/0-9-*, zaś pozostałe protokoły są obsługiwane w formie pluginów.
Opisywany pośrednik komunikatów obsługuje również protokoły: