nServiceBus vs Mass Transit vs Rhino Service Bus vs inne?


104

Po prostu robię kilka szybkich skoków w możliwym użyciu systemu przesyłania wiadomości do przetwarzania plików, które są w ładnie oddzielonym systemie przepływu pracy.

Jakie są zalety i wady, które ludzie znaleźli przy korzystaniu z każdego z powyższych frameworków? Jakie są zalety korzystania z nich w porównaniu z ręcznie zwijanym systemem usługi MSMQ z powiązaniami WCF i / lub rozwiązaniami innymi niż MSMQ?

Odpowiedzi:


71

Zalecałbym trzymanie się z dala od ręcznie rozwijanych rozwiązań, ponieważ jest kilka trudnych rzeczy, które należy zrobić dobrze - na przykład sposób obsługi transakcji, jak wyjątki powodują wycofywanie zmian, jak zatrzymać ciągłe wycofywanie (zatrute wiadomości), jak zintegrować się z długotrwałymi przepływami pracy, aby wyrównać granice zarządzania stanem i nie tylko.

Prawdopodobnie będziesz potrzebować jakiejś trwałej / transakcyjnej infrastruktury komunikacyjnej, więc nie korzystasz z MSMQ, pozostawiając Service Broker na platformie Microsoft lub inną alternatywę, taką jak ActiveMQ. Usługa MSMQ ma tę zaletę, że jest już zainstalowana na wszystkich komputerach z systemem Windows, w przeciwieństwie do Service Brokera, który nie jest.

Jeśli chodzi o wybór między NServiceBus, Mass Transit i Rhino Service Bus - ta odpowiedź Stackoverflow porównująca NServiceBus z MassTransit byłaby dobrym miejscem do rozpoczęcia.

W naszej wersji 3.1 wprowadzamy NSB Studio - zestaw zintegrowanych narzędzi do modelowania programu Visual Studio, które umożliwiają modelowanie systemu na wyższym poziomie abstrakcji, a duża część konfiguracji i inicjalizacji NServiceBus jest wykonywana automatycznie. Powiedziałbym, że to naprawdę przechyla szalę na korzyść NServiceBus.

Mam nadzieję, że to pomoże.

Zastrzeżenie: jestem autorem NServiceBus.


25
Rhino Service Bus jest bardzo skoncentrowane na zamku. Jeśli nie znasz lub nie czujesz się komfortowo z Castle jako podstawową częścią architektury swojej aplikacji, możesz mieć z tym pewne trudności. NServiceBus i Mass Transit lub bardziej niezależny od kontenera. NServiceBus jest dostarczany z „serwerem aplikacji”, który obsługuje hosting Twojego kodu, a także zmianę aktywnych implementacji infrastruktury (takich jak in-memory, MSMQ i DB) podczas przechodzenia systemu z trybu deweloperskiego na testowy do produkcyjnego. Jest również wyposażony w funkcje testowania jednostkowego dla logiki obsługi wiadomości i długotrwałych procesów. Nie wierzę, że MassTransit je ma.
— Udi Dahan

35
Prawdopodobnie warto zauważyć, że Udi jest AUTOREM NServiceBus, więc jego opinia może być tutaj nieco stronnicza. :) Powiedziawszy to, całkowicie się zgadzam i byłbym zwolennikiem korzystania z NServiceBus z tych samych powodów, co on.
— skb

8
@skb: zgodził się! Udi, odpowiadając na pytania dotyczące usługi nservicebus, naprawdę powinieneś zrzec się odpowiedzialności, szczególnie takie jak to!
— andy

14
Wciąż przyzwyczajam się do tego, że ludzie odkrywają teraz NServiceBus, którzy nie wiedzą, że go stworzyłem
— Udi Dahan

5
@UdiDahan: W jaki sposób nServiceBus jest „open source”? Publikowanie kodu źródłowego bez licencji na jego użycie nie wpływa na ducha otwartego oprogramowania, jakim jest współdzielenie. W pełni popieram Twoje prawo do zarabiania na życie ze sprzedaży oprogramowania (robię to samo), ale myślę, że byłoby znacznie dokładniej, gdybyś nie reklamował tego rozwiązania (post 2.0) jako open source.
— Eric J.

52

NServiceBus to dobry produkt, ale uważaj na problemy licencyjne. Ma tendencję do zmiany polityki licencyjnej zgodnie z życzeniem autorów. Spójrz na przykład na informacje o starej licencji.

Może się zdarzyć, że w trakcie opracowywania projektu okaże się, że za NServiceBus trzeba zapłacić dużo pieniędzy.

Również darmowa wersja ma ograniczenia wydajności.

MassTransit jest całkowicie darmowym oprogramowaniem typu open source, nie ma ograniczeń i jest objęty licencją Apache 2.0.

Nie korzystałem z Rhino Service Bus .


1
W rzeczywistości dostarczymy nową licencję z wersją 3.1, która pozwoli na uruchomienie go na wielu komputerach za darmo (chociaż przy niższych poziomach przepustowości).
— Udi Dahan

11
MassTransit to Twój człowiek. Jest wolne; brak ograniczeń licencyjnych. Jeśli możesz obejść się bez projektanta przepływu i możesz samodzielnie toczyć własne, nie możesz tego pokonać. Może również znajdować się na szczycie RabbitMQ, a usługa MSMQ ma wtyczki społeczności Azure. MassTranit + RabbitMQ udowodnił, że jest doskonałym, stabilnym środowiskiem i bardzo szybko umożliwia uruchomienie klientów / producentów.
— Bigtoe

3
Weź również pod uwagę EasyNetQ (proste opakowanie wokół rabbitMQ) Zaskoczony UDI nie ma większego znaczenia w dyskusjach z sugestiami 4 dobre alternatywy 2 nServiceBus? Co miałem na myśli. pomagać ludziom na wczesnych etapach komunikacji. Jest wiele dobrych prostych (darmowych) sposobów 2 na rozpoczęcie; nie ma znaczenia, czego używasz, o ile jest to łatwe i idealnie bezpłatne; (darmowa gra i darmowa implementacja, a także możliwość zmiany później) Kiedy będziesz się rozwijać, opracujesz własną listę problemów; w tym momencie bardziej dojrzałe produkty będą łatwą decyzją, z prostym uzasadnieniem kosztów, np. nservicebus.
— kod śnieżny

Począwszy od MassTransit 4.0 MSMQ nie jest już obsługiwany ( masstransit-project.com/MassTransit )
— MyGGaN

25

Aktualizacja stanu Rhino vs NServicebus:

http://www.infoq.com/news/2012/04/nservicebus3-0

InfoQ to Ayende: Wcześniej sam napisałeś magistralę usług dla .NET, a mianowicie magistralę usług Rhino. Czy użytkownicy Rhino Service Bus powinni teraz ponownie rozważyć i przenieść się do NServiceBus?

Ayende: Zbudowałem Rhino Service Bus około 2008 roku. Zbudowałem go głównie dlatego, że nie byłem zadowolony ze stanu innych autobusów serwisowych w tamtym czasie. Budując mój autobus usługowy miałem różne obawy i kierunek, ale to było 4 lata temu. Myślę, że w tamtym czasie NServiceBus poczynił wielkie postępy, stając się łatwiejszym w użyciu produktem i mając znacznie lepszą historię rozwoju po wyjęciu z pudełka. Gdybym dzisiaj zaczynał od autobusów serwisowych, mocno wątpię, czy zbudowałbym własne.


9

potencjalną wadą czegokolwiek opartego na MSMQ jest ograniczenie maksymalnego rozmiaru wiadomości. IIRC to około 4 MB, na które łatwo możesz się natknąć, jeśli masz do czynienia z dużymi plikami i przechowujesz zawartość pliku w wiadomości.


7
Co ciekawe, większość kolejek w chmurze nie obsługuje nawet ładunków o wielkości 100 KB, więc jest to coś, co będzie musiało być brane pod uwagę przez wiele aplikacji w przyszłości.
— Udi Dahan

32
We wzorcach integracji przedsiębiorstwa (Woolf, Hohpe) wzorzec sprawdzania oświadczeń w szczególności rozwiązuje ten problem. Odniesienie do dużego ładunku jest przechowywane tylko w wiadomości, dzięki czemu wiadomość jest niewielka. Duże rozmiary wiadomości mogą siać spustoszenie w przepustowości systemu przesyłania wiadomości.
— Chris Patterson

4
Nie jest to problem z NServiceBus, ponieważ mają koncepcję magistrali danych, która w przejrzysty sposób obchodzi ograniczenia rozmiaru.
— Khalid Abuhakmeh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.