niedziela, 4 października 2015

[MessageQueues] Wprowadzenie

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