RabbitMQ to rozproszony middleware do przesyłania wiadomości, rozwijany w języku Erlang i udostępniany na licencji open-source. Obsługuje zaawansowany protokół kolejkowania wiadomości (AMQP) oraz biblioteki klientów w różnych językach programowania, takich jak Java, Golang, PHP i Python.
Funkcje
- Niezawodność: Zapewnia niezawodność poprzez trwałość wiadomości, obsługę transakcji, potwierdzanie odbioru i transmisji, itp.
- Mechanizm routingu: Obsługuje główne modele subskrypcji i konsumpcji, takie jak rozgłaszanie, subskrypcja, dopasowywanie nagłówków, itp.
- Skalowalność: Wiele węzłów RabbitMQ może utworzyć klaster i dynamicznie rozszerzać klaster zgodnie z rzeczywistymi potrzebami biznesowymi.
- Wysoka dostępność: Kolejki mogą być ustawione jako lustra na maszynach w klastrze, co sprawia, że kolejki są wciąż dostępne w przypadku problemów z niektórymi węzłami.
- Wiele protokołów: Oprócz obsługi natywnego AMQP, RabbitMQ obsługuje także wiele protokołów middleware do przesyłania wiadomości, takich jak STOMP, MQTT, itp.
- Klienty wielojęzyczne: RabbitMQ obsługuje niemal wszystkie powszechnie używane języki, takie jak Java, Python, Ruby, PHP, C#, JavaScript, itp.
- Interfejs zarządzania: RabbitMQ udostępnia przyjazny interfejs do monitorowania i zarządzania wiadomościami oraz węzłami klastra.
- Mechanizm wtyczek: RabbitMQ dostarcza wiele wtyczek do rozszerzeń, a użytkownicy mogą również pisać własne wtyczki.
Główne przypadki użycia
Przetwarzanie asynchroniczne
Najważniejsze części procesu biznesowego lub te mniej istotne mogą być asynchronicznie powiadamiane do systemu docelowego za pomocą powiadomienia poprzez wiadomość, co pozwala głównemu procesowi biznesowemu na szybką reakcję bez oczekiwania synchronicznego na wyniki przetwarzania z innych systemów.
Dekopling aplikacji
Rozszerzenie biznesu może być osiągnięte na podstawie mechanizmów subskrypcji wiadomości. Na przykład w scenariuszu zamawiania w e-commerce, gdy użytkownik składa zamówienie, generowana jest wiadomość o zamówieniu. Moduł magazynu może subskrybować wiadomość o zamówieniu do wysyłki, moduł punktów może subskrybować wiadomość o zamówieniu do dodawania punktów, a moduł SMS może subskrybować wiadomość o zamówieniu do wysyłania wiadomości tekstowych, itd.
Odcinanie szczytów
Ponieważ mogą występować różnice w zdolnościach przetwarzania systemów z góry i z dołu, kolejki wiadomości mogą działać jako regulator, pozwalając systemom z dołu na równomierne przetwarzanie ruchu.
Na przykład w przypadku pomyślnego opłacenia zamówienia i powiadomienia magazynu o wysyłce, jeśli bieżący moduł zamówień obsługuje wysoką współbieżność 1000, a wysyłka magazynu obsługuje tylko 100, wprowadzenie kolejki wiadomości pozwala modułowi magazynu subskrybować wiadomość o zamówieniu i powolne przetwarzanie wysyłki w kolejce.
ps: To jak stanie w kolejce do metra.