Zmagam się z listą zalet i wad dotyczących NServiceBus i MassTransit.
Teraz wiem, że jest tu już wątek, ale tak naprawdę nie odpowiada na moje pytania.
Oto, co do tej pory przeczytałem:
- NServiceBus, tak, jest licencjonowany i nie jest darmowy.
- MassTransit, tak, to open source, ale wydaje się, że brakuje dokumentacji.
NServiceBus jest starszy i ma więcej odniesień. Trudno znaleźć informacje o MassTransit, ale mam otwarty umysł. Muszę jednak zapewnić solidne rozwiązanie, więc muszę o to zapytać.
Więc proszę, ktoś z doświadczeniem w obu frameworkach. Dlaczego powinienem wybrać NServiceBus? LUB Dlaczego powinienem wybrać MassTransit?
Czy to wydajność, bezpieczeństwo, skala czy?
źródło
Jako oryginalny autor NServiceBus, prawdopodobnie jestem nieco stronniczy w stosunku do własnej technologii, ale postaram się, aby było to jak najbardziej wyważone.
Wsparcie transportowe
Oba NServiceBus i MassTransit wsparcie RabbitMQ i Azure Autobus , ale NServiceBus obsługuje również:
Na temat RabbitMQ
Można argumentować, że NServiceBus ma silniejsze wsparcie dla RabbitMQ - na przykład w jego funkcji opóźnionej dostawy, podczas gdy Mass Transit stwierdza, że ich "wtyczka jest nadal uważana za eksperymentalną. Jest obsługiwana przez MassTransit, ale nie możemy zagwarantować nic więcej niż wtyczka gwarantuje sobie. "
Współpracujemy również bardzo blisko z zespołem RabbitMQ, przyczyniając się do tworzenia .net SDK z korzyścią dla całego ekosystemu.
Jeśli chodzi o Azure Service Bus
Poziom współpracy, jaki mamy z zespołem Azure Service Bus, jest jeszcze wyższy, z ponad 70 żądaniami PR do ich zestawu SDK .net core .
Korzystając z NServiceBus, czerpiesz korzyści z pełnej głębi tej wiedzy.
Obróbka
To jest największa różnica.
Po zbudowaniu solidnego systemu, wgląd w to, jak różne ruchome części rozmawiają ze sobą, staje się naprawdę ważny. MassTransit nie ma wiele w tej dziedzinie poza małą integracją poprzez źródło diagnostyczne z narzędziami innych firm, takimi jak Application Insights lub Open Trace.
Platforma usługowa wokół NServiceBus idzie trochę dalej, dając Ci możliwość zobaczenia diagramów sekwencji we wszystkich punktach końcowych dzięki ServiceInsight :
Możesz również uzyskać logiczny widok wszystkich punktów końcowych i komunikatów:
Zasadniczo otrzymujesz żywą dokumentację architektury swojego systemu.
Zarządzanie i monitorowanie
To kolejny obszar, w którym MassTransit nie ma zbyt wiele. Kiedy system innej firmy, z którym się integrujesz, staje się niedostępny, a kilka komunikatów w Twoim systemie kończy się w kolejce błędów, jedynym rozwiązaniem, jakie ma MassTransit, jest możliwość ręcznego przeniesienia tych wiadomości później za pomocą wtyczki RabbitMQ Shovel .
Platforma usługowa wokół NServiceBus obejmuje monitorowanie tej kolejki błędów, narzędzia graficzne pozwalające zobaczyć, jakie były przyczyny tych błędów, a także możliwość odtwarzania grup tych nieudanych komunikatów i sprawdzania, czy zostały one pomyślnie przetworzone w prostej aplikacji internetowej o nazwie ServicePulse .
Dostępna jest również wizualizacja okresowych kontroli stanu, które mogą zapewnić wczesne ostrzeżenia o problemach, zanim wiadomości zaczną kończyć się niepowodzeniem.
I wreszcie na platformie dostępne jest monitorowanie wydajności :
Naprawdę otrzymujesz pełny pakiet, jeśli chodzi o wsparcie produkcyjne.
Długoterminowe wsparcie i kompatybilność wsteczna
Podczas gdy ludzie z Mass Transit zawsze byli bardzo dobrzy w pomaganiu każdemu, kto ma pytania na ten temat w Gitter lub w ich Grupie Google , nie sądzę, aby dostarczali poprawki błędów w starszych wersjach. Kiedy systemy produkcyjne istnieją już od kilku lat i nie możesz po prostu aktualizować wszystkiego przez cały czas, zaczyna to być ważne.
Z obsługą NServiceBus obejmuje :
Doradztwo i szkolenia
Z perspektywy offline, na całym świecie dostępne są kursy publiczne w NServiceBus, a także wielu konsultantów, których można sprowadzić na miejsce, aby rozpocząć projekt lub pomóc w przypadku problemów. Słyszałem od kilku firm, które zdecydowały się przejść z MassTransit na NServiceBus, ponieważ nie mogły znaleźć kogoś na miejscu, gdy tego potrzebowały.
Koncesjonowanie
Niektórzy ludzie nadal nie wiedzą o NServiceBus, że jest BEZPŁATNY do użytku osobistego i dla startupów .
Jeśli chodzi o komercyjne wykorzystanie , modele licencjonowania NServiceBus są bardzo elastyczne, jak wskazuje szerokie spektrum klientów, i mogą być dobrze uzasadnione kierownictwem. Oczywiście w przypadku MassTransit licencja jest bezpłatna.
Mam nadzieję, że to w jakiś sposób pomoże.
źródło
Wiem, że jest późno, aby odpowiedzieć na to pytanie, ale ze względu na bingleability muszę wspomnieć o Rebusie (którego jestem głównym autorem).
Rebus ma teraz około 8 lat i od samego początku był używany do przenoszenia pieniędzy i kontrolowania elektrowni.
Obsługuje większość podstawowych systemów kolejkowania, takich jak MSMQ, RabbitMQ, Azure Service Bus, Azure Storage Queues, Amazon SQS itp., Ale obsługuje również bardziej zabawne rzeczy, takie jak używanie MSSQL, PostgreSQL i Oracle jako transportu.
Wiki dokumentacji jest dość obszerne, chociaż wydaje się, że wiele osób sobie z tym radzi, ponieważ interfejsy API Rebusa są tak łatwe do znalezienia.
Rebus zawsze był (i zawsze będzie) całkowicie darmowy. Jest na licencji MIT, więc możesz w zasadzie robić z nim to, na co masz ochotę.
Jeśli skończysz jako poważny użytkownik Rebus i potrzebujesz formalnej umowy na wsparcie i dodatkowe narzędzia, możesz subskrybować Rebus Pro , który jest oferowany przez Rebus FM (firmę stojącą za Rebus).
Wspomniane powyżej „dodatkowe narzędzia” mają obecnie postać Menedżera floty , który może w tym pomóc. Na przykład Fleet Manager całkowicie zastępuje kolejki błędów , więc zamiast tego zapisywane są tam komunikaty o błędach. Oznacza to, że wiadomości, które nie powiodły się, mogą być przeglądane, zarządzane i ponawiane w dowolnym momencie za pomocą kilku kliknięć w Fleet Manager.
źródło
Zawsze możesz użyć Shuttle (FOSS): https://github.com/Shuttle/shuttle-esb :)
Dokumentacja (zawsze ulepszana): http://shuttle.github.io/shuttle-esb/
Projekt Shuttle trwa już prawie 2 lata i wykorzystuje systemy produkcyjne. Będzie to kwestia wyboru tego, co będzie do ciebie pasować.
NServiceBus ma dobre osiągnięcia. Używałem go wcześniej w systemie produkcyjnym (1.9), ale nie od czasu, gdy stał się komercyjny (punkt, w którym zacząłem z Shuttle).
Nie próbowałem MassTransit.
Myślę, że wszystkie opcje będą miały podstawy (polecenie / wydarzenie / pub-sub). Jednak NServiceBus ma sagi i elementy magistrali danych, chociaż uważam, że jest wystarczająco łatwe do obsługi danych poza samą magistralą usług, na przykład w programach obsługi komunikatów punktu końcowego. Nie wiem, czy MassTransit ma sagi / magistralę danych, ale Shuttle na pewno nie.
Inną kwestią jest prawdopodobnie sposób korzystania z magistrali usług. Jeśli ma być częścią produktu, to w przypadku opcji komercyjnej, takiej jak NServiceBus, należy wziąć pod uwagę koszty dla użytkowników produktu i chociaż nadal jest to coś, co należy wziąć pod uwagę przy wewnętrznym rozwoju, z pewnością można to zrobić usprawiedliwiony.
źródło
Aby udzielić bardziej aktualnej odpowiedzi, opracowałem zawodowo oba ekosystemy i oba obsługują teraz szeroką gamę technologii MQ i .NET Core.
Użyłem NServicebus kilka lat temu w nowym produkcie chmurowym, potrzebowaliśmy platformy .NET Core, której Mass Transit wtedy nie obsługiwał. Muszę powiedzieć - jest to cudowna rzecz w użyciu jako programista, jest wiele fajnych linerów, świetne narzędzia / monitorowanie, a dokumentacja jest naprawdę dobra.
Dostępne są różne poziomy wsparcia i licencji, a przy jednej okazji potrzebowaliśmy pomocy, była to dobra jakość.
Używam Mass Transit od kilku miesięcy w nowej firmie i zdecydowanie wolą mieć darmową bibliotekę o otwartym kodzie źródłowym. Podróż była nieco trudniejsza - dokumentacja dotycząca MT jest miejscami niewystarczająca, a wiele przykładów / problemów jest nieaktualnych. Nie ma też szerokiego zakresu zaawansowanych funkcji, ale możesz ich nie potrzebować w ich przypadku.
Działa jednak dobrze, a programiści MT wydają się wkładać DUŻO wysiłku we wspieranie ich OSS - znacznie wykraczając poza to, czego można się spodziewać.
Tak więc osobiście mój TLDR byłby - kup NServicebus, jeśli przekonasz się, że Twoja firma za niego zapłaci, ale MT to użyteczna alternatywa i najlepsze, co możesz dostać za darmo.
źródło