NServiceBus – możliwości
Komunikacja kolejkowa
W NServiceBus każdy węzeł szyny posiada 2 kolejki: kolejkę wejściową oraz kolejkę błędów. NSB w nieskończonej pętli odbiera i przetwarza komunikaty z kolejki wejściowej. Jedna instancja szyby może obsługiwać tylko jedną taką kolejkę. Komunikaty, których nie udało się przetworzyć pewną założoną ilość razy (domyślnie 5) trafiają do kolejki błędów (dead-letter queue), gdzie oczekują na manualne przetworzenie przez jakiegoś administratora.
Wysyłanie komunikatu w NServiceBus polega na wstawieniu go do kolejki wejściowej adresata. To bardzo ważne. Nie istnieje nic takiego jak kolejka wyjściowa. Zamiast tego komunikat od razu trafia na wejście kolejki docelowej. Jeśli kolejka ta znajduje się na innej maszynie, lokalna infrastruktura MSMQ automatycznie zajmuje się forwardowaniem komunikatu do docelowej instancji MSMQ.
Publikacja polega na wstawieniu komunikatu do wejściowej kolejki odbiorców.
Własna kolejka wejściowa jest pomijana
Wysyłanie komunikatów
Metoda Send służy do wysłania komunikatu (lub zestawu komunikatów) do jednego konkretnego adresata. Adresat ten (w postaci nazwy kolejki) może być podany jako argument lub pobrany z konfiguracji. Preferowane jest rozwiązanie wykorzystujące konfigurację. W sekcji MsmqTransportConfig określamy mapowanie assembly lub typ -> kolejka docelowa.
Metoda Publish służy do wysłania komunikatu do wielu odbiorców jednocześnie. Odbiorcy ci muszą jednak wcześniej zgłosić zapotrzebowanie na dostarczanie komunikatów danego typu.
Proces subskrypcji: 1) wysłanie komunikatu,
2) zapisanie informacji o subskrypcji w bazie danych
Zgłoszenie to określa się mianem subskrypcji. Subskrypcje są przechowywane wewnętrznie przez NSB. Aby zasubskrybować dany komunikat, klient wywołuje na swojej instancji IBus metodę Subscribe, której działanie polega na wysłaniu systemowego komunikatu subskrypcji na adres serwera. Oznacza do, że klient musi w swojej sekcji MsmqTransportConfig posiadać mapowanie typu subskrybowanego komunikatu na adres kolejki wejściowej serwera.
To be continued…



