NServiceBus vs MassTransit

83

Ich habe Probleme mit einer Vor- und Nachteile-Liste für NServiceBus und MassTransit.

Jetzt weiß ich, dass es hier bereits einen Thread gibt, der meine Fragen jedoch nicht wirklich beantwortet.

Folgendes habe ich bisher gelesen:

  1. NServiceBus, ja, es ist lizenziert und nicht kostenlos.
  2. MassTransit, ja, es ist Open Source, aber die Dokumentation scheint etwas zu fehlen.

NServiceBus ist älter und hat mehr Referenzen. Es ist schwer, etwas über MassTransit zu finden, aber ich bin aufgeschlossen. Ich muss jedoch eine solide Lösung liefern, und deshalb muss ich fragen.

Also bitte jemanden mit Erfahrung mit beiden Frameworks. Warum sollte ich NServiceBus wählen? ODER Warum sollte ich MassTransit wählen?

Ist es Leistung, Sicherheit, Skalierbarkeit oder?

Jack Andersen
quelle

Antworten:

100

Wenn ich zusammenfassen müsste, würde ich Folgendes sagen:

Wenn Sie kommerziellen Support benötigen, entscheiden Sie sich für NServiceBus. Wenn Sie mit der Verwendung von Foren als Hilfsmittel vertraut sind, ist MassTransit eine großartige Option. Die Entwickler haben bisher sehr gut auf unsere Probleme reagiert. Wenn Sie sich für MassTransit entscheiden, wählen Sie jetzt zwischen MSMQ und RabbitMQ. Wenn Sie DTC benötigen, wählen Sie MSMQ. Wenn Sie mehr Funktionen und eine bessere Verwaltung wünschen, wählen Sie RabbitMQ.

Bei unserem Projekt haben wir aus zwei Gründen von NServiceBus auf MassTransit umgestellt:

  1. MassTransit ist kostenlos
  2. Wir lieben RabbitMQ

Ich habe beide Frameworks verwendet. Ich habe MassTransit länger als NServiceBus verwendet. Hier sind die Highlights, wie ich sie sehe.

Kosten:

  • MassTransit ist Apache 2.0-lizenziert und für die kommerzielle Produktion kostenlos, NServiceBus hingegen nicht.

Unterstützung:

  • Wie Udi erwähnte, gibt es eine Option für kommerziellen NServiceBus-Support, die ich für MassTransit nicht gesehen habe.

Transport:

  • MassTransit unterstützt MSMQ und RabbitMQ
  • NServiceBus unterstützt nur MSMQ RabbitMQ wird in NServiceBus 4+ unterstützt

RabbitMQ vs MSMQ:

  • MSMQ unterstützt DTC (Distributed Transaction Coordinator) für Transaktionen mit mehreren Prozessen auf möglicherweise mehreren Computern (z. B. SQL Server, Windows Service).
  • RabbitMQ verfügt über eine hervorragende Administrationsoberfläche
  • MSMQ gibt es schon länger und ist ein Microsoft-Produkt
  • RabbitMQ ist neuer, Open Source, kostenlos und wird von VMWare gesponsert
  • MSMQ ist standardmäßig auf den meisten Windows-Computern installiert

Udi Dahan und die MassTransit-Leute (Chris Patterson, Dru Sellers und Travis Smith) sind alle brillante Leute.

Lehm
quelle
8
Gute Antwort, Clay. Gestatten Sie mir, dass NServiceBus in der nächsten Version (die in ein paar Wochen herauskommt) auch ActiveMQ unterstützt. Wir haben unsere Unterstützung für RabbitMQ absichtlich verzögert, bis wir eine solide Deduplizierungsgeschichte veröffentlichen konnten, um den Mangel an DTC auszugleichen - das ist für nächstes Jahr geplant. MassTransit führt diese Deduplizierung nicht durch (aber es könnte auch auf ihrer Roadmap stehen, ich weiß es nicht).
Udi Dahan
1
Gut zu hören. Das Fehlen echter End-to-End-Transaktionen wäre ein Deal-Breaker für unternehmenskritische Systeme.
Clay
Wir haben ein System mit nServiceBus eingerichtet und wir mögen die Reaktionsfähigkeit der Community sehr und insgesamt ist es ziemlich einfach zu konfigurieren. Wir verwenden MSMQ derzeit, da es allgemeiner ist. Obwohl nServiceBus viele Lizenzmodelle hat, bin ich immer noch ziemlich verwirrt, welche Lizenz ich (oder unser Team) kaufen müsste, um mit den Nutzungsbedingungen übereinzustimmen. Das Team zählt ungefähr 5 Personen, von denen jede gegen die API programmiert, aber vorerst mehr im POC-Modus (ja in der Produktion :)). MassTransit wird als nächstes überprüft. Es scheint ziemlich gut dokumentiert zu sein.
Guillaume Schuermans
MassTransit hat derzeit weder kommerziellen Support noch plant einer von uns, diesen anzubieten. Ich würde die Mailingliste für den MassTransit-Support vorschlagen, aber in meinem RSS-Reader werden mit MassTransit-Tags versehene Inhalte angezeigt, sodass ich normalerweise innerhalb von ein oder zwei Tagen auf SO antworte.
Travis
Für MT können Sie auch zu einem Gitter-Gespräch gehen: gitter.im/MassTransit/MassTransit
CrusherJoe
34

Als ursprünglicher Autor von NServiceBus bin ich wahrscheinlich ein bisschen voreingenommen gegenüber meiner eigenen Technologie, aber ich werde versuchen, dies so ausgewogen wie möglich zu halten.

Transportunterstützung

Sowohl NServiceBus als auch MassTransit unterstützen RabbitMQ und Azure Service Bus . NServiceBus unterstützt jedoch auch:

Zum Thema RabbitMQ

Es könnte argumentiert werden, dass NServiceBus RabbitMQ stärker unterstützt - zum Beispiel in seiner Funktionalität für verzögerte Zustellung, während Mass Transit angibt, dass das Plugin immer noch als experimentell angesehen wird. Es wird von MassTransit unterstützt, aber wir können nur das Plugin garantieren garantiert sich. "

Wir arbeiten auch sehr eng mit dem RabbitMQ-Team zusammen und tragen zum .net SDK zum Nutzen des gesamten Ökosystems bei.

Wenn es um Azure Service Bus geht

Die Zusammenarbeit mit dem Azure Service Bus-Team ist mit über 70 PRs im .net-Kern-SDK sogar noch höher .

Wenn Sie NServiceBus verwenden, profitieren Sie von der vollen Tiefe dieses Wissens.

Werkzeuge

Das ist der größte Unterschied.

Sobald Sie ein umfangreiches System aufgebaut haben, ist es sehr wichtig, einen Überblick darüber zu haben, wie die verschiedenen beweglichen Teile miteinander kommunizieren. MassTransit bietet in diesem Bereich nur eine kleine Integration über eine Diagnosequelle in Tools von Drittanbietern wie Application Insights oder Open Trace.

Die Service-Plattform rund um NServiceBus geht noch einen Schritt weiter und bietet Ihnen die Möglichkeit, mit ServiceInsight Sequenzdiagramme über alle Endpunkte hinweg anzuzeigen :

Sequenzdiagramme mit ServiceInsight

Sie können auch die logische Ansicht aller Ihrer Endpunkte und Nachrichten erhalten:

Die logische Ansicht eines NServiceBus-Systems

Im Wesentlichen erhalten Sie eine lebendige Dokumentation der Architektur Ihres Systems.

Management & Überwachung

Dies ist ein weiterer Bereich, in dem MassTransit nicht viel hat. Wenn ein System eines Drittanbieters, in das Sie integrieren, nicht mehr verfügbar ist und eine Reihe von Nachrichten in Ihrem System in der Fehlerwarteschlange landen, können Sie diese Nachrichten von MassTransit nur mithilfe des RabbitMQ Shovel-Plugins später manuell zurückschieben .

Die Service-Plattform rund um NServiceBus umfasst die Überwachung dieser Fehlerwarteschlange, grafische Tools, um die Ursachen dieser Fehler zu ermitteln, sowie die Möglichkeit, Gruppen dieser fehlgeschlagenen Nachrichten wiederzugeben und sicherzustellen, dass sie tatsächlich alle in einer einfachen Web-App erfolgreich verarbeitet wurden genannt ServicePulse .

Fehlgeschlagene Nachrichtengruppierung mit ServicePulse

Es gibt auch eine Visualisierung von Integritätsprüfungen, die regelmäßig ausgeführt werden und frühzeitig vor Problemen warnen können, bevor Nachrichten fehlschlagen.

Und schließlich gibt es die Leistungsüberwachung auf der Plattform:

NServiceBus-Leistungsüberwachung

Sie erhalten wirklich das volle Paket, wenn es um Produktionsunterstützung geht.

Langzeitunterstützung und Abwärtskompatibilität

Während die Leute von Mass Transit immer sehr gut darin waren, allen zu helfen, die Fragen zu Gitter oder ihrer Google-Gruppe haben , glaube ich nicht, dass sie Fehlerbehebungen für ältere Versionen anbieten. Wenn es Ihre Produktionssysteme schon seit ein paar Jahren gibt und Sie nicht immer alles aktualisieren können, wird dies immer wichtiger.

Mit NServiceBus umfasst die Unterstützung :

  • 2+ Jahre für jede Hauptversion
  • Weitere 2 Jahre erweiterte Unterstützung
  • Garantierte Antwortzeiten bei kritischen Problemen
  • 24x7 Verfügbarkeit

Beratung & Training

Aus Offline-Sicht gibt es weltweit öffentliche Kurse auf NServiceBus sowie viele Berater, die vor Ort hinzugezogen werden können, um ein Projekt zu starten oder bei Problemen zu helfen. Ich habe von mehreren Unternehmen gehört, die beschlossen haben, von MassTransit zu NServiceBus zu wechseln, weil sie nicht jemanden vor Ort haben konnten, wenn sie ihn brauchten.

Lizenzierung

Was einige Leute noch nicht über NServiceBus wissen, ist, dass es für den persönlichen Gebrauch und Startups KOSTENLOS ist .

KOSTENLOS für den persönlichen Gebrauch und Startups

Wenn es um die kommerzielle Nutzung geht , sind die Lizenzmodelle rund um NServiceBus sehr flexibel, wie das breite Kundenspektrum zeigt, und können für das Management gut gerechtfertigt werden. Mit MassTransit ist die Lizenzierung natürlich kostenlos.

Hoffe das hilft irgendwie.

Udi Dahan
quelle
6
Ich würde gerne hören, was Sie über MassTransit ohne Vorurteile zu sagen haben. Der Versuch, die MassTransit-Implementierung auf eine Art und Weise zu "verteidigen". Ich mag nServiceBus sehr, wir haben nur Probleme mit den Lizenzkosten, wenn wir dies in einer realen Produktionsumgebung versuchen, aber nur für neu hinzugefügte Funktionen in unserer Plattform. Der Proof-of-Concept-Code könnte man sagen.
Guillaume Schuermans
1
Was ist mit mehr technischen Unterschieden? Was ist mit Zuverlässigkeit, Deduplizierung, Senden großer Nachrichten usw. Wie vergleichen sich diese Frameworks / Playforms? Gibt es eine Liste, in der mehrere Messaging-Busse auf diese Weise verglichen werden?
Steven
1
Soweit ich weiß, @Steven, verfügt MassTransit nicht über die Deduplizierungsfunktion der NServiceBus-Postausgangsfunktion. Ein Teil des Problems bei der Bereitstellung der gewünschten Liste besteht darin, dass sich jede dieser Technologien weiterentwickelt, wodurch jede Liste dieser Art veraltet wird.
Udi Dahan
8

Ich weiß, dass es spät ist, sich auf diese Frage einzulassen, aber um der Binglabilität willen muss ich Rebus erwähnen (dessen Hauptautor ich zufällig bin).

Rebus ist jetzt ungefähr 8 Jahre alt und wurde verwendet, um Geld zu bewegen und Kraftwerke von Anfang an zu steuern.

Es unterstützt die meisten grundlegenden Warteschlangensysteme wie MSMQ, RabbitMQ, Azure Service Bus, Azure-Speicherwarteschlangen, Amazon SQS usw., unterstützt aber auch witzigere Dinge wie die Verwendung von MSSQL, PostgreSQL und Oracle als Transportmittel.

Das Dokumentations-Wiki ist ziemlich umfangreich, obwohl viele Leute damit auszukommen scheinen, weil die APIs von Rebus so leicht zu entdecken sind.

Rebus war (und wird) immer völlig frei. Es ist MIT-lizenziert, so dass Sie im Grunde damit machen können, wie Sie sich fühlen.

Wenn Sie ein ernsthafter Rebus-Benutzer sind und eine formelle Supportvereinbarung und zusätzliche Tools benötigen, können Sie Rebus Pro abonnieren , das von Rebus FM (dem Unternehmen hinter Rebus) angeboten wird.

Das oben erwähnte "zusätzliche Werkzeug" kommt derzeit in Form eines Flottenmanagers , der bei Dingen helfen kann. Beispielsweise ersetzt Fleet Manager Fehlerwarteschlangen vollständig , sodass stattdessen fehlgeschlagene Nachrichten dort gespeichert werden. Dies bedeutet, dass fehlgeschlagene Nachrichten jederzeit mit wenigen Klicks im Flottenmanager angezeigt, verwaltet und wiederholt werden können.

mookid8000
quelle
2
Rebus wird viel unterschätzt. Es ist ein wahres Leichtgewicht im .NET-Ökosystem.
ThomasDC
3

Sie können jederzeit Shuttle (FOSS) verwenden: https://github.com/Shuttle/shuttle-esb :)

Dokumentation (wird ständig verbessert): http://shuttle.github.io/shuttle-esb/

Das Shuttle-Projekt hat fast 2 Jahre gedauert und verwendet Produktionssysteme. Es wird eine Frage der Wahl sein, was mit Ihnen in Resonanz steht.

NServiceBus hat eine gute Erfolgsbilanz. Ich habe es zuvor auf einem Produktionssystem (1.9) verwendet, aber nicht, seit es kommerziell wurde (der Punkt, an dem ich mit Shuttle angefangen habe).

Ich habe MassTransit nicht ausprobiert.

Ich denke, alle Ihre Optionen haben die Grundlagen (Befehl / Ereignis / Pub-Sub). NServiceBus hat jedoch Sagen und Datenbusmaterial, obwohl es meiner Meinung nach einfach genug ist, Daten außerhalb des Servicebusses selbst zu verarbeiten, z. B. in Ihren Endpunktnachrichten-Handlern. Ich weiß nicht, ob MassTransit Sagen / Datenbus hat, aber Shuttle sicherlich nicht.

Eine weitere Überlegung ist wahrscheinlich, wie Sie den Servicebus nutzen möchten. Wenn es Teil eines Produkts sein soll, müssen Sie für eine kommerzielle Option wie NServiceBus die Kostenauswirkungen für Benutzer Ihres Produkts berücksichtigen, und obwohl dies immer noch für die Eigenentwicklung berücksichtigt werden muss, kann dies durchaus der Fall sein gerechtfertigt.

Eben Roux
quelle
1

Um eine aktuellere Antwort zu geben, habe ich mich professionell mit beiden Ökosystemen entwickelt und beide unterstützen jetzt eine breite Palette von MQ-Technologien und .NET Core.

Ich habe NServicebus vor einigen Jahren für ein neues Cloud-Produkt verwendet. Wir brauchten .NET Core, das Mass Transit zu diesem Zeitpunkt nicht unterstützte. Ich muss sagen - es ist eine schöne Sache, als Entwickler zu arbeiten, es gibt viele nette Einzeiler, großartige Werkzeuge / Überwachung und die Dokumentation ist wirklich gut.

Es stehen verschiedene Support- und Lizenzstufen zur Verfügung, und einmal brauchten wir Hilfe, es war von guter Qualität.


Ich benutze Mass Transit seit einigen Monaten in einem neuen Unternehmen, und sie bevorzugen eine kostenlose Open-Source-Bibliothek. Die Reise war etwas rockiger - die Dokumentation für MT fehlt stellenweise und viele Beispiele / Probleme sind veraltet. Es gibt auch nicht ganz die Palette der erweiterten Funktionen, aber Sie benötigen sie möglicherweise nicht für ihren Anwendungsfall.

Es funktioniert jedoch einwandfrei und die MT-Entwickler scheinen viel Mühe in die Unterstützung ihres OSS zu stecken - weit über das hinaus, was Sie vernünftigerweise erwarten können.

Mein TLDR wäre also: Holen Sie sich NServicebus, wenn Ihr Unternehmen davon überzeugt sein kann, dafür zu zahlen, aber MT ist eine brauchbare Alternative und das Beste, was Sie kostenlos bekommen können.

Phil S.
quelle