nServiceBus vs Mass Transit vs Rhino Service Bus vs altro?


104

Sto solo facendo alcuni rapidi picchi nell'eventuale utilizzo di un sistema di messaggistica per elaborare i file che si trovano in un sistema di flusso di lavoro ben disaccoppiato.

Quali sono i pro e i contro che le persone hanno riscontrato nell'utilizzo di ciascuno dei framework di cui sopra? Quali sono i vantaggi dell'utilizzo di questi rispetto a un sistema MSMQ rollato a mano con le associazioni WCF e / o soluzioni non MSMQ ??

Risposte:


71

Consiglierei di stare lontano dalle soluzioni fatte a mano in quanto ci sono un sacco di cose un po 'difficili che devono essere messe a punto nel modo giusto - come il modo in cui vengono gestite le transazioni, come le eccezioni causano rollback, come smettere di rollback all'infinito (messaggi avvelenati), come integrarsi con flussi di lavoro di lunga durata in modo che i confini della gestione dello stato si allineino e altro ancora.

Probabilmente vorrai un qualche tipo di infrastruttura di messaggistica durevole / transazionale, quindi non utilizzando MSMQ rimarrai con Service Broker sulla piattaforma Microsoft o qualche altra alternativa come ActiveMQ. MSMQ ha il vantaggio di essere già installato su tutte le macchine Windows, a differenza di Service Broker che non lo è.

In termini di scelta tra NServiceBus, Mass Transit e Rhino Service Bus, questa risposta di Stackoverflow che confronta NServiceBus a MassTransit sarebbe un buon punto di partenza.

Nella nostra versione 3.1, stiamo introducendo NSB Studio, un set di strumenti di modellazione integrati di Visual Studio che ti consentono di modellare il tuo sistema a un livello di astrazione più elevato e che gran parte della configurazione e dell'inizializzazione di NServiceBus vengono eseguite automaticamente. Direi che questo fa davvero pendere la bilancia a favore di NServiceBus.

Spero che aiuti.

Disclaimer: sono l'autore di NServiceBus.


25
Rhino Service Bus è molto incentrato su Castle. Se non hai familiarità / a tuo agio con Castle come parte fondamentale dell'architettura dell'applicazione, potresti avere qualche difficoltà con esso. NServiceBus e Mass Transit o più container indipendenti. NServiceBus viene fornito con un "server delle applicazioni" che gestisce l'hosting del codice e la modifica delle implementazioni dell'infrastruttura attiva (come in-memory, MSMQ e DB) durante la transizione del sistema da dev a test a prod. Inoltre è dotato di funzionalità di unit test per la logica di gestione dei messaggi e i processi a lunga esecuzione. Non credo che MassTransit abbia questi.
Udi Dahan

35
Probabilmente vale la pena notare che Udi è l'AUTORE di NServiceBus, quindi la sua opinione potrebbe essere un po 'di parte qui. :) Detto questo, sono completamente d'accordo e raccomanderei l'uso di NServiceBus per le stesse ragioni che ha fatto.
skb

8
@skb: d'accordo! Udi, dovresti davvero dare una sorta di disclaimer quando rispondi alle domande di nservicebus, in particolare a quelle come questa!
andy

14
Mi sto ancora abituando al fatto che ora le persone stanno scoprendo NServiceBus che non sanno che l'ho creato io
Udi Dahan

5
@UdiDahan: in che modo nServiceBus è "open source"? Pubblicare il codice sorgente senza una licenza per utilizzarlo non fa nulla per lo spirito dell'open source, che è la condivisione. Sostengo pienamente il tuo diritto di guadagnarti da vivere vendendo software (faccio lo stesso), ma penso che sarebbe molto più accurato se non pubblicizzassi la soluzione (post 2.0) come open source.
Eric J.

52

NServiceBus è un buon prodotto ma attenzione ai problemi di licenza. Ha la tendenza a cambiare la politica di licenza come desiderano gli autori. Dai un'occhiata ad esempio alle informazioni sulla vecchia licenza.

Può accadere che nel bel mezzo dello sviluppo del tuo progetto ti accorgi di dover pagare un sacco di soldi per NServiceBus.

Anche la versione gratuita ha limiti di prestazioni.

MassTransit è open source assolutamente gratuito, non ha limitazioni ed è sotto licenza Apache 2.0.

Non ho utilizzato Rhino Service Bus .


1
In realtà forniremo una nuova licenza con la versione 3.1 che ti permetterà di eseguirla su più macchine gratuitamente (anche se a livelli inferiori di throughput).
Udi Dahan

11
MassTransit è il tuo uomo. È gratis; nessuna restrizione di licenza. Se puoi fare a meno di un designer di flussi e puoi arrotolare a mano il tuo, allora non puoi batterlo. Può anche essere posizionato sopra RabbitMQ e MSMQ ha plug-in di Azure della community. MassTranit + RabbitMQ ha dimostrato di essere un eccellente ambiente stabile e consente molto rapidamente di far funzionare i tuoi consumatori / produttori.
Bigtoe

3
Considera anche EasyNetQ (semplice wrapper attorno a rabbitMQ) UDI sorpreso non pesa di più sulle discussioni con suggerimenti 4 buone alternative 2 nServiceBus? Quello che intendo. aiutare le persone nel viaggio della messaggistica nelle prime fasi. Ci sono molti buoni modi semplici (gratuiti) 2 per iniziare; non importa cosa usi fintanto che è facile e idealmente gratuito; (libero di giocare e libero di implementare per davvero e libero di cambiare anche in seguito) Una volta che stai crescendo svilupperai il tuo elenco di preoccupazioni; a quel punto, un prodotto più maturo diventa una decisione facile, con facili giustificazioni dei costi, ad esempio nservicebus.
snowcode

A partire da MassTransit 4.0 MSMQ non è più supportato ( masstransit-project.com/MassTransit )
MyGGaN

25

Un aggiornamento allo stato di Rhino vs NServicebus:

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

InfoQ per Ayende: hai già scritto un bus di servizio per .NET, vale a dire Rhino Service Bus. Gli utenti di Rhino Service Bus dovrebbero ora riconsiderare e passare a NServiceBus?

Ayende: Ho costruito Rhino Service Bus intorno al 2008. L'ho costruito principalmente perché non ero soddisfatto dello stato degli altri bus di servizio in quel momento. Ho avuto diverse preoccupazioni e direzioni durante la costruzione del mio autobus di servizio, ma è stato 4 anni fa. In quel periodo, penso che NServiceBus abbia fatto passi da gigante nel diventare un prodotto più facile da usare e avere una storia di sviluppo fuori dagli schemi molto migliore. Se oggi dovessi iniziare con gli autobus di servizio, dubito fortemente che costruirò il mio.


9

un potenziale svantaggio di qualsiasi cosa basata su MSMQ è la restrizione sulla dimensione massima dei messaggi. IIRC è di circa 4 MB, che potresti facilmente incontrare se hai a che fare con file di grandi dimensioni e archiviare il contenuto del file all'interno del messaggio.


7
È interessante notare che la maggior parte delle code basate su cloud non supporta nemmeno payload di 100 KB, quindi questo è qualcosa che dovrà essere preso in considerazione da molte app in futuro.
Udi Dahan

32
In Enterprise Integration Patterns (Woolf, Hohpe), il pattern Claim Check affronta specificamente questa preoccupazione. Un riferimento al carico utile di grandi dimensioni viene mantenuto solo nel messaggio, mantenendo il messaggio piccolo. Le dimensioni dei messaggi di grandi dimensioni possono causare danni alla velocità effettiva di un sistema di messaggistica.
Chris Patterson,

4
Questo non è un problema con NServiceBus poiché hanno un concetto di un bus dati, che funziona in modo trasparente attorno ai limiti di dimensione.
Khalid Abuhakmeh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.