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
- Jeśli używam RabbitMQ to po co mi NServiceBus? i odwrotnie
- Co NServiceBus może zrobić, ale RabbitMQ lub Kafka nie może?
- Czy Mogę używać NServiceBus i kafka razem? Lub Apache-Kafka nie wymaga NServiceBus
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.
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).
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