NServiceBus i królik MQ lub Kafka

Próbuję nauczyć się systemu komunikatorów. Odkryłem, że RabbitMq i NServiceBus używają razem w kilku miejscach. Moje pytania to

  1. Jeśli używam RabbitMQ to po co mi NServiceBus? i odwrotnie
  2. Co NServiceBus może zrobić, ale RabbitMQ lub Kafka nie może?
  3. Czy Mogę używać NServiceBus i kafka razem? Lub Apache-Kafka nie wymaga NServiceBus
Author: MJK, 2016-06-29

2 answers

Lata temu zadałem sobie to samo pytanie. Patrzyłem na NServiceBus do pracy z inną kolejką komunikatów, ale pytanie było takie samo.

Postanowiłem nie używać NServiceBus.

6 miesięcy później zdałem sobie sprawę, że odtworzyłem połowę tego, co zrobił NServiceBus... tylko znacznie gorzej.

Równoważnym pytaniem po co Ci NServiceBus z RabbitMQ, jest pytanie po co Ci. NET Framework z ASP.NET MVC, WinForms, XAML, lub dowolnego z wbudowanych biblioteki, które są dostarczane z. NET, gdy masz środowisko uruchomieniowe Common Language.

Czy CLR nie powinno wystarczyć?

Oczywiście, że nie. Posiadanie środowiska uruchomieniowego, na którym może być wykonywany kod - interpretera MSIL i silnika wykonawczego - nie jest prawie wystarczające, aby być produktywnym.

Oczywiście, możesz pisać aplikacje wiersza poleceń, które pobierają dane wejściowe i wytwarzają dane wyjściowe. Ale spróbuj zbudować prawdziwą aplikację bez wspólnych bibliotek - bez wbudowanych sterowników SQL Server; bez żadnych Kontrolki lub biblioteki stron trzecich. Zbuduj aplikację komputerową Windows bez systemu.Przestrzeń nazw systemu Windows.

Te biblioteki są potrzebne do zapewnienia zbiorów, dostępu do bazy danych, obiektów okien i kontrolek interfejsu użytkownika.

Podobnie, RabbitMQ daje Ci wszystko, czego potrzebujesz, aby zacząć i pracować, ale nie wystarczy, aby utrzymać produktywność.

Jasne, możesz pobrać sterownik. NET dla RabbitMQ i zacząć produkować i konsumować wiadomości.

Przez jakiś czas, to będzie działać tylko dobrze.

Wkrótce stworzysz owijkę wokół sterownika, dzięki czemu zmniejszysz ilość kodu, który musisz napisać.

Wtedy będziesz musiał poradzić sobie z ack vs nack, i stworzysz do tego proste API.

Wtedy pojawi się potrzeba kolejek z martwymi literami z wywołaniami nack, a Ty zawiniesz to w swoim API-uproszczonym w porównaniu do sterownika rabbitmq, oczywiście.

W końcu będziesz chciał poradzić sobie z truciznami - wiadomości, które są zniekształcone i powodują wyjątki. Po raz kolejny, nie chcesz pisać jednorazowego kodu do tego, więc napiszesz bibliotekę do obsługi tego.

Lista jest długa.

Za 6 miesięcy będziesz pracować z na wpół napisaną, ledwo określoną, niemożliwą do przetestowania biblioteką, która naśladuje tylko wartość i możliwości NServiceBus (lub MassTransit lub dowolnej innej biblioteki magistrali usługowej, którą wybierzesz).

Nie powiem, że musisz używać NServiceBus. I powiedziałabym powinieneś dowiedzieć się, jak działa RabbitMQ, bez niego. Ale kiedy już przekroczysz podstawy wysyłania i odbierania wiadomości, wartość nservicebus i innych implementacji service bus staje się bardzo widoczna, bardzo szybko.

 129
Author: Derick Bailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-30 18:10:45

Wygląda na to, że wsparcie Wspólnoty dla Kafka transport w NServiceBus jest teraz: https://docs.particular.net/nservicebus/kafka/ (Sam jeszcze nie próbowałem).

 1
Author: Alexander Bortnik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-15 11:14:41