nServiceBus gegen Mass Transit gegen Rhino Service Bus gegen andere?

104

Machen Sie einfach ein paar schnelle Schritte, um möglicherweise ein Messaging-System zu verwenden, um Dateien zu verarbeiten, die sich in einem gut entkoppelten Workflow-System befinden.

Was sind die Vor- und Nachteile, die Menschen bei der Verwendung der oben genannten Frameworks festgestellt haben? Was sind die Vorteile dieser Verwendung gegenüber einem handgerollten MSMQ-System mit WCF-Bindungen und / oder Nicht-MSMQ-Lösungen?

mwjackson
quelle

Antworten:

71

Ich würde empfehlen, sich von handgerollten Lösungen fernzuhalten, da es eine Reihe von etwas schwierigen Dingen gibt, die genau richtig gemacht werden müssen - wie Transaktionen abgewickelt werden, wie Ausnahmen Rollbacks verursachen, wie man das endlose Zurückrollen stoppt (Giftmeldungen), wie man sich in lang laufende Workflows integriert, damit die Grenzen der Staatsverwaltung aufeinander abgestimmt sind, und vieles mehr.

Möglicherweise möchten Sie eine dauerhafte / transaktionale Messaging-Infrastruktur. Wenn Sie also MSMQ nicht verwenden, bleibt Service Broker auf der Microsoft-Plattform oder eine andere Alternative wie ActiveMQ übrig. MSMQ hat den Vorteil, dass es bereits auf allen Windows-Computern installiert ist, im Gegensatz zu Service Broker, bei dem dies nicht der Fall ist.

In Bezug auf die Wahl zwischen NServiceBus, Mass Transit und Rhino Service Bus - diese Stackoverflow-Antwort , bei der NServiceBus mit MassTransit verglichen wird, ist ein guter Ausgangspunkt.

In unserer Version 3.1 stellen wir NSB Studio vor - eine Reihe von integrierten Modellierungswerkzeugen von Visual Studio, mit denen Sie Ihr System auf einer höheren Abstraktionsebene modellieren und einen Großteil der Konfiguration und Initialisierung von NServiceBus automatisch für Sie durchführen können. Ich würde sagen, dass dies wirklich den Ausschlag für NServiceBus gibt.

Hoffentlich hilft das.

Haftungsausschluss: Ich bin der Autor von NServiceBus.

Udi Dahan
quelle
25
Der Rhino Service Bus ist sehr schlosszentriert. Wenn Sie mit Castle als Kernbestandteil Ihrer Anwendungsarchitektur nicht vertraut sind, haben Sie möglicherweise Schwierigkeiten damit. NServiceBus und Mass Transit oder mehr Container-Agnostiker. NServiceBus wird mit einem "Anwendungsserver" geliefert, der das Hosting Ihres Codes sowie das Ändern aktiver Infrastrukturimplementierungen (wie In-Memory, MSMQ und DB) beim Übergang Ihres Systems von dev zu test zu prod übernimmt. Es enthält auch Unit-Test-Funktionen für Ihre Nachrichtenverarbeitungslogik und lang laufende Prozesse. Ich glaube nicht, dass MassTransit diese hat.
Udi Dahan
35
Es ist wahrscheinlich erwähnenswert, dass Udi der AUTOR von NServiceBus ist, und daher ist seine Meinung hier möglicherweise etwas voreingenommen. :) Trotzdem stimme ich voll und ganz zu und würde die Verwendung von NServiceBus aus den gleichen Gründen befürworten, die er getan hat.
skb
8
@skb: vereinbart! Udi, Sie sollten wirklich eine Art Haftungsausschluss geben, wenn Sie nservicebus-Fragen beantworten, insbesondere solche!
Andy
14
Ich gewöhne mich immer noch an die Tatsache, dass jetzt Leute NServiceBus entdecken, die nicht wissen, dass ich es erstellt habe
Udi Dahan
5
@UdiDahan: Wie ist nServiceBus "Open Source"? Das Veröffentlichen des Quellcodes ohne Lizenz zur Nutzung trägt nicht zum Geist von Open Source bei, das geteilt wird. Ich unterstütze voll und ganz Ihr Recht, eine lebende Verkaufssoftware zu verdienen (ich mache das Gleiche), aber ich denke, es wäre viel genauer, wenn Sie die Lösung (nach 2.0) nicht als Open Source bewerben würden.
Eric J.
52

NServiceBus ist ein gutes Produkt, aber Vorsicht vor Lizenzproblemen. Es hat die Tendenz, die Lizenzierungsrichtlinie nach Wunsch des Autors zu ändern. Schauen Sie sich zum Beispiel alte Lizenzinformationen an.

Es kann vorkommen, dass Sie mitten in Ihrer Projektentwicklung feststellen, dass Sie viel Geld für NServiceBus bezahlen müssen.

Auch die kostenlose Version weist Leistungseinschränkungen auf.

MassTransit ist absolut kostenlos Open Source, hat keine Einschränkungen und steht unter der Apache 2.0-Lizenz.

Ich habe den Rhino Service Bus nicht benutzt .

Alex Burtsev
quelle
1
Tatsächlich werden wir eine neue Lizenz mit Version 3.1 bereitstellen, mit der Sie sie kostenlos auf mehreren Computern ausführen können (allerdings mit geringerem Durchsatz).
Udi Dahan
11
MassTransit ist dein Mann. Es ist kostenlos; Keine Lizenzbeschränkungen. Wenn Sie auf einen Flow-Designer verzichten und Ihren eigenen von Hand rollen können, können Sie ihn nicht schlagen. Es kann auch auf RabbitMQ sitzen und MSMQ verfügt über Community-Azure-Plugins. MassTranit + RabbitMQ hat sich als hervorragende stabile Umgebung erwiesen und ermöglicht es Ihnen, Ihre Verbraucher / Produzenten sehr schnell zum Laufen zu bringen.
Bigtoe
3
Denken Sie auch an EasyNetQ (einfacher Wrapper um rabbitMQ). Überraschtes UDI belastet Diskussionen mit Vorschlägen nicht mehr. 4 gute Alternativen 2 nServiceBus? Was ich meine. Helfen Sie den Leuten auf der Messaging-Reise in einem frühen Stadium. Es gibt viele gute einfache (kostenlose) Wege 2, um loszulegen; spielt keine Rolle, was Sie verwenden, solange es einfach und idealerweise kostenlos ist; (frei zu spielen und frei zu implementieren und auch später frei zu ändern) Sobald Sie wachsen, werden Sie Ihre eigene Liste von Bedenken entwickeln; An diesem Punkt sind ausgereiftere Produkte eine einfache Entscheidung mit einfachen Kostenbegründungen, z. B. nservicebus.
Snowcode
Ab MassTransit 4.0 wird MSMQ nicht mehr unterstützt ( masstransit-project.com/MassTransit )
MyGGaN
25

Ein Update zum Status von Rhino vs NServicebus:

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

InfoQ an Ayende: Sie haben zuvor selbst einen Servicebus für .NET geschrieben, nämlich den Rhino Service Bus. Sollten Benutzer von Rhino Service Bus jetzt überdenken und zu NServiceBus wechseln?

Ayende: Ich habe den Rhino Service Bus um 2008 gebaut. Ich habe ihn hauptsächlich gebaut, weil ich mit dem Zustand der anderen Service Busse zu dieser Zeit nicht zufrieden war. Ich hatte unterschiedliche Bedenken und Richtungen beim Bau meines Servicebusses, aber das war vor 4 Jahren. In dieser Zeit hat NServiceBus meiner Meinung nach große Fortschritte gemacht, um ein benutzerfreundlicheres Produkt zu werden und eine viel bessere Out-of-the-Box-Entwicklungsgeschichte zu haben. Wenn ich heute mit Servicebussen anfangen würde, bezweifle ich stark, dass ich meine eigenen bauen würde.

Ciprian Teiosanu
quelle
9

Ein möglicher Nachteil von allem, was auf MSMQ basiert, ist die Beschränkung der maximalen Nachrichtengröße. IIRC sind ungefähr 4 MB, auf die Sie leicht stoßen können, wenn Sie mit großen Dateien arbeiten und den Dateiinhalt in der Nachricht speichern.

schnelltrocknend
quelle
7
Interessanterweise unterstützen die meisten Cloud-basierten Warteschlangen nicht einmal Nutzdaten von 100 KB. Dies muss daher in Zukunft von vielen Apps berücksichtigt werden.
Udi Dahan
32
In Enterprise Integration Patterns (Woolf, Hohpe) wird das Claim Check-Muster speziell auf dieses Problem ausgerichtet. Ein Verweis auf die große Nutzlast wird nur in der Nachricht gespeichert, wodurch die Nachricht klein bleibt. Große Nachrichtengrößen können den Durchsatz eines Nachrichtensystems beeinträchtigen.
Chris Patterson
4
Dies ist bei NServiceBus kein Problem, da sie ein Konzept für einen Datenbus haben, der Größenbeschränkungen transparent umgeht.
Khalid Abuhakmeh