Kolejki komunikatów umożliwiają asynchroniczną komunikację pomiędzy komponentami. Poprawia to wydajność i skalowalność w przypadku systemów, w których wykonywane są intensywne obliczeniowo / komunikacyjnie operacje. Stanowią alternatywę dla synchronicznej komunikacji. Dzięki nim użytkownik końcowy korzysta z responsywnego UI, ponieważ nie musi czekać, aż operacje, które zleca przetworzą się synchronicznie.
Mechanizm działania kolejek jest następujący: klient wstawia wiadomość do kolejki, w osobnym procesie działa worker, który pobiera i przetwarza takie wiadomości. Komunikacja pomiędzy systemami jest bezstanowa. Wiadomość zazwyczaj zostaje w kolejce tak długo, aż zostanie przetworzona.
Messaging Patterns:
- Fire and Forget (klient wstawia wiadomości do kolejki)
- Request - Response (istnieją dwie kolejki: system do jednej z nich wstawia requesty, a z drugiej pobiera asynchronicznie odpowiedzi od innego systemu)
- Publish - Subscribe (broadcast, kolejka forwarduje wiadomość do wielu subskrybentów)
Obsługa błędów (wzorce):
- Retries (nieudana wiadomość jest blokowana do momentu jej przetworzenia) - problem jest zatruta wiadomość, której nie da się przetworzyć - będzie blokowała kolejkę
- Dead-Letter Queue - specjalna kolejka dla nieprzetworzonych wiadomości, jeżeli przetwarzanie jakiejś wiadomości zakończy się błędem, to trafia ona do DLQ, gdzie może być przetwarzana przez inny mechanizm niż zwykłe wiadomości
Brak komentarzy:
Prześlij komentarz