DevTalk#22 – O wiadomościach z Szymonem Pobiegą

11

szymon-pobiegaDzisiaj technicznie-architektonicznie. Dwudziesty drugi odcinek DevTalka pod znakiem WIADOMOŚCI i KOMUNIKACJI stoi. Reflektor w te mgliste pojęcia kieruje Szymon Pobiega: programista/architekt, blogger, prelegent. Pracuje w Particular Software, gdzie klepie NServiceBusa dla Udiego Dahana (pamiętacie DevTalk#14 – CQRS with Udi Dahan?). Zatem: zdecydowanie wie o czym mówi!

Z rozmowy dowiecie się czym tak naprawdę jest komunikacja i dlaczego warto sobie zawracać głowę jakimiś “wiadomościami” czy “kolejkami”. Dlaczego jest to lepsze niż RPC (Remote Procedure Calls). Jakie mamy systemy kolejek, czym się między sobą różnią, oraz… po co na kolejki nakładać jeszcze service bus, czyli szynę wiadomości?

Enjoy!


Montaż odcinka: Krzysztof Śmigiel.
Ważne adresy:

Linki


Muzyka wykorzystana w intro:
“Misuse” Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 3.0
http://creativecommons.org/licenses/by/3.0/
Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

11 Comments

  1. Pingback: dotnetomaniak.pl

  2. 1) W przypadku RabbitMQ jestem przekonany, że centralizacja nie jest aż tak wielką wadą. Zauważmy, że podczas przesyłania komunikatu do serwera, jeżeli wystąpi błąd, to program działający na kliencie natychmiast dostaje informację o nim (np. błąd połączenia). Taka sytuacja może wystąpić również dla usługi kolejkowania działającej na lokalnej maszynie, więc i tak klient musi obsłużyć te błędy.
    2) W przypadku polecenia które kasuje rekord z bazy danych i zwraca jego zawartość, obawiam się że użycie go do przetwarzania komunikatów może powodować problem utraty danych. Po usunięciu z bazy komunikatu, “żyje” on w pamięci operacyjnej. Jeżeli padnie zasilanie, między operacją skasuj-odczytaj a dostarczeniem komunikatu do odbiorcy, to komunikat zostanie bezpowrotnie utracony. Potrzebny tu jest jakiś protokół, przykładowo dopiero po portwierdzeniu odebrania komunikatu przez odbiorcę, rekord powinien zostać usunięty z bazy.

  3. Ciekawy odcinek.
    Po przesluchaniu calosc, mysle ze zabraklo przykladu bardziej przyziemnego jak wykorzystac kolejki. Np. prosty program do wysylania duzej ilosci maili moglby byc takim przykladem. Kilka programow wysylka do systemu mailowego prosbe o wyslanie maila a system mailowy kolejkuje sobie to lokalnie i wysyla swoim tempem.

    Warto jeszcze wspomniec, ze na Windows mozna uzyc ESB Toolkit jako szyny danych, ktory to jest dodatkiem do BizTalka

  4. U nas w bardzo dużym projekcie korzystamy z NServiceBus’a opierającego się o bazę MSSQL. Działa to bardzo dobrze i daje dużą swobodę manipulowania message’mi. Poza tym łatwo pisać własne narzędzia operujące na wiadomościach NSB. Te domyślne nie do końca spełniały nasze oczekiwania, więc stworzyliśmy trochę swoich.

    Oczywiście nie jest to system, w którym jak message przetworzy się sekunde później to coś się wielkiego wydarzy, więc przepustowość bazy nam w zupełności wystarcza.

  5. Nawiązując do tematu wymiany komunikatów poprzez bazę danych to czy koś używał do tego SQL Server Service Broker?

  6. Do “dnf “: używam Service Brokera. działa na produkcji, ale teraz wiem, że gdybym miał wybór, to bym nie szedł tą drogą. Kosztowało to nas dużo pracy, SB jest chyba napisany przez adminów db dla adminów db.

  7. Szymon Pobiega on

    @Piotr S
    1. Przerwaga MSMQ nad Rabbit w kontekście dostępności polega na tym, że MSMQ, jako usługa lokalna, ma o wiele większe szanse działania. Odapada cały zestaw problemów związanych z niedziałającą siecią. Oczywiście Rabbit ma dużo zalet w obszarach, gdzie MSMQ ma tyły. Choose your poison, jak to mawiają
    2. Destrukcyjny odczyt wykonywany jest w ramach transakcji, która jest commit-owana po przetworzeniu wiadomości, więc nie istnieje niebezpieczeństwo utraty danych w przypadku wyjęcia wtyczki

  8. Pingback: webMASTAH.weekly.004 | webMASTAH

  9. Pingback: 24 - O IoT z Arkadiuszem Benedyktem | DevTalk

  10. Pingback: DevTalk#25 - O Event Driven Architecture z Szymonem Kulcem