Wiele lat temu zadałem sobie to samo pytanie. Patrzyłem na NServiceBus, aby pracować z inną kolejką wiadomości, ale pytanie było takie samo.
Zdecydowałem się nie używać NServiceBus.
6 miesięcy później zdałem sobie sprawę, że ponownie zbudowałem połowę tego, co zrobił NServiceBus ... tylko znacznie słabiej.
Odpowiednim pytaniem, dlaczego potrzebowałbyś NServiceBus z RabbitMQ, jest pytanie, dlaczego potrzebujesz .NET Framework z ASP.NET MVC, lub WinForms, lub XAML, lub którejkolwiek z wbudowanych bibliotek, które .NET dostarczany z, gdy masz Common Runtime Runtime.
Czy CLR nie powinien wystarczyć?
Oczywiście, że nie. Posiadanie środowiska wykonawczego, na którym można wykonać kod - interpreter MSIL i silnik wykonawczy - nie wystarcza, aby osiągnąć produktywność.
Oczywiście można pisać aplikacje wiersza polecenia, 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 elementów sterujących lub bibliotek innych firm. Zbuduj aplikację Windows Desktop bez obszaru nazw System.Windows.
Potrzebujesz tych bibliotek, by dać ci kolekcje, dostęp do baz danych oraz obiekty okien i kontrolki interfejsu użytkownika.
Podobnie, RabbitMQ zapewnia wszystko, czego potrzebujesz, aby zacząć i działać, ale nie na tyle, aby utrzymać produktywność.
Oczywiście, możesz pobrać sterownik .NET dla RabbitMQ i zacząć produkować i konsumować wiadomości.
Przez chwilę to zadziała dobrze.
Wkrótce okaże się, że tworzysz opakowanie wokół sterownika, dzięki czemu możesz zmniejszyć ilość kodu, który musisz napisać.
Wtedy będziesz musiał radzić sobie z ack vs nack, a stworzysz prosty API do tego.
Następnie pojawia się potrzeba pojawienia się kolejki wiadomości nieprzeczytanych, dzięki wywołaniom typu nack, a także zawiniesz to w swoim API - uproszczonym w porównaniu do sterownika rabbitmq, oczywiście.
W końcu będziesz chciał zająć się wiadomościami zatrucia - wiadomościami, które są zniekształcone i powodują wyjątki. Ponownie, nie chcesz pisać do tego jednorazowego kodu, więc napiszesz bibliotekę, aby sobie z tym poradzić.
Lista jest długa.
Za 6 miesięcy znajdziesz pracę z półpisemną, ledwo określoną biblioteką, która tylko naśladuje wartość i możliwości NServiceBus (lub MassTransit lub jakiejkolwiek innej biblioteki magistrali usług, którą wybierzesz).
Nie powiem, że musisz używać NServiceBus. Powiedziałbym, że powinieneś nauczyć się jak działa RabbitMQ bez niego. Ale gdy już przekroczysz podstawy wysyłania i odbierania wiadomości, wartość NServiceBus i innych implementacji magistrali usług staje się bardzo widoczna, bardzo szybko.
Związane z drugim [pytanie] (http://stackoverflow.com/questions/9558128/specific-advantages-of-nservicebus-over-plan-rabbitmq) – vappolinario
@vappolinario Dzięki za to. Czy to samo dotyczy Kafki? – MJK
Nigdy nie używałem Kafki, więc nie wiem. – vappolinario