nServiceBus vs Mass Transit vs Rhino Service Bus vs autre?

104

Il suffit de faire quelques pointes rapides pour éventuellement utiliser un système de messagerie pour traiter les fichiers qui se trouvent dans un système de flux de travail bien découplé.

Quels sont les avantages et les inconvénients que les gens ont trouvés en utilisant chacun des cadres ci-dessus? Quels sont les avantages de leur utilisation par rapport à un système MSMQ roulé à la main avec les liaisons WCF et / ou des solutions non MSMQ?

mwjackson
la source

Réponses:

71

Je recommanderais de rester à l'écart des solutions déroulées à la main, car il y a un tas de choses quelque peu difficiles qui doivent être bien traitées - comme la façon dont les transactions sont gérées, comment les exceptions provoquent des annulations, comment arrêter de revenir en arrière à l'infini (messages empoisonnés), comment s'intégrer à des workflows de longue durée afin que les limites de la gestion des états s'alignent, et plus encore.

Vous voudrez probablement une sorte d'infrastructure de messagerie durable / transactionnelle, donc si vous n'utilisez pas MSMQ, vous vous retrouverez avec Service Broker sur la plate-forme Microsoft, ou une autre alternative comme ActiveMQ. MSMQ a l'avantage d'être déjà installé sur toutes les machines Windows, contrairement à Service Broker qui ne l'est pas.

Pour ce qui est du choix entre NServiceBus, Mass Transit et Rhino Service Bus, cette réponse Stackoverflow comparant NServiceBus à MassTransit serait un bon point de départ.

Dans notre version 3.1, nous présentons NSB Studio - un ensemble d'outils de modélisation intégrés à Visual Studio qui vous permettent de modéliser votre système à un niveau d'abstraction plus élevé et de faire en sorte qu'une grande partie de la configuration et de l'initialisation de NServiceBus soit effectuée automatiquement. Je dirais que cela fait vraiment pencher la balance en faveur de NServiceBus.

J'espère que cela pourra aider.

Avertissement: je suis l'auteur de NServiceBus.

Udi Dahan
la source
25
Rhino Service Bus est très centré sur le château. Si vous n'êtes pas familier / à l'aise avec Castle en tant qu'élément central de l'architecture de votre application, vous pouvez avoir des difficultés avec celui-ci. NServiceBus et Mass Transit ou plus indépendant des conteneurs. NServiceBus est livré avec un «serveur d'applications» qui gère l'hébergement de votre code ainsi que la modification des implémentations d'infrastructure active (comme en mémoire, MSMQ et DB) lorsque vous passez votre système de développement à test à production. Il est également livré avec des fonctionnalités de test unitaire pour votre logique de traitement des messages et vos processus de longue durée. Je ne pense pas que MassTransit en ait.
Udi Dahan
35
Il est probablement intéressant de noter qu'Udi est l'Auteur de NServiceBus, et donc son opinion peut être un peu biaisée ici. :) Cela dit, je suis tout à fait d'accord et je recommanderais l'utilisation de NServiceBus pour les mêmes raisons que lui.
skb
8
@skb: d'accord! Udi, vous devriez vraiment donner une sorte d'avertissement lorsque vous répondez aux questions nservicebus, en particulier celles comme celle-ci!
andy
14
Je m'habitue encore au fait que des gens découvrent maintenant NServiceBus qui ne savent pas que je l'ai créé
Udi Dahan
5
@UdiDahan: En quoi nServiceBus est-il "open source"? Publier le code source sans licence d'utilisation ne fait rien pour l'esprit de l'open source, qui est le partage. Je soutiens pleinement votre droit de gagner sa vie en vendant des logiciels (je fais de même), mais je pense que ce serait beaucoup plus précis si vous ne vantiez pas la solution (post 2.0) comme open source.
Eric J.
52

NServiceBus est un bon produit mais méfiez-vous des problèmes de licence. Il a tendance à modifier sa politique de licence comme le souhaitent les auteurs. Jetez un œil par exemple aux anciennes informations de licence.

Il se peut qu'au milieu du développement de votre projet, vous découvriez que vous devez payer beaucoup d'argent pour NServiceBus.

La version gratuite a également des limitations de performances.

MassTransit est un open source absolument gratuit, il n'a pas de limitations et est sous licence Apache 2.0.

Je n'ai pas utilisé Rhino Service Bus .

Alex Burtsev
la source
1
En fait, nous fournirons une nouvelle licence avec la version 3.1 qui vous permettra de l'exécuter gratuitement sur plusieurs machines (bien qu'à des niveaux de débit inférieurs).
Udi Dahan
11
MassTransit est votre homme. C'est gratuit; aucune restriction de licence. Si vous pouvez vous passer d'un concepteur de flux et pouvez rouler le vôtre à la main, vous ne pouvez pas le battre. Il peut également être installé au-dessus de RabbitMQ et MSMQ a des plugins Azure communautaires. MassTranit + RabbitMQ s'est avéré être un excellent environnement stable et vous permet très rapidement de mettre en marche vos consommateurs / producteurs.
Bigtoe
3
Pensez également à EasyNetQ (simple wrapper autour de rabbitMQ) L'UDI surpris ne pèse pas plus sur les discussions avec des suggestions 4 bonnes alternatives 2 nServiceBus? Ce que je veux dire. aidez les gens dans le voyage de la messagerie dès les premiers stades. Il existe de nombreuses façons simples (gratuites) de 2 commencer; peu importe ce que vous utilisez tant que c'est facile et idéalement gratuit; (gratuit pour jouer, et gratuit pour implémenter pour de vrai, et gratuit pour changer aussi plus tard) Une fois que vous grandissez, vous développerez votre propre liste de préoccupations; à ce stade, un produit plus mature sera une décision facile, avec des justfications de coût faciles, par exemple nservicebus.
snowcode
À partir de MassTransit 4.0, MSMQ n'est plus pris en charge ( masstransit-project.com/MassTransit )
MyGGaN
25

Une mise à jour de l'état de Rhino vs NServicebus:

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

InfoQ à Ayende: Vous avez déjà écrit vous-même un bus de service pour .NET, à savoir le bus de service Rhino. Les utilisateurs de Rhino Service Bus devraient-ils maintenant reconsidérer et passer à NServiceBus?

Ayende: J'ai construit Rhino Service Bus vers 2008. Je l'ai construit principalement parce que je n'étais pas satisfait de l'état des autres bus de service à l'époque. J'ai eu des préoccupations et des orientations différentes lors de la construction de mon bus de service, mais c'était il y a 4 ans. À cette époque, je pense que NServiceBus a fait de grands progrès pour devenir un produit plus facile à utiliser et avoir une bien meilleure histoire de développement prête à l'emploi. Si je commençais aujourd'hui avec des bus de service, je doute fort que je construirais le mien.

Ciprian Teiosanu
la source
9

un inconvénient potentiel de tout ce qui est basé sur MSMQ est la restriction de la taille maximale des messages. IIRC est d'environ 4 Mo, ce que vous pourriez facilement rencontrer si vous traitez de gros fichiers et stockez le contenu du fichier dans le message.

séchage rapide
la source
7
Fait intéressant, la plupart des files d'attente basées sur le cloud ne prennent même pas en charge les charges utiles de 100 Ko, c'est donc quelque chose qui devra être pris en compte par de nombreuses applications à l'avenir.
Udi Dahan
32
Dans les modèles d'intégration d'entreprise (Woolf, Hohpe), le modèle de vérification des réclamations répond spécifiquement à ce problème. Une référence à la grande charge utile est conservée dans le message uniquement, en gardant le message petit. Des messages de grande taille peuvent faire des ravages sur le débit d'un système de messagerie.
Chris Patterson
4
Ce n'est pas un problème avec NServiceBus car ils ont un concept de bus de données, qui fonctionne de manière transparente autour des limitations de taille.
Khalid Abuhakmeh