nServiceBus vs Mass Transit vs Rhino Service Bus vs other?

104

Apenas fazendo alguns picos rápidos na possibilidade de usar um sistema de mensagens para processar arquivos que estão em um sistema de fluxo de trabalho bem desacoplado.

Quais são os prós e os contras que as pessoas descobriram ao usar cada uma das estruturas acima? Quais são as vantagens de usá-los em relação a um sistema MSMQ enrolado à mão com ligações WCF e / ou soluções não MSMQ?

mwjackson
fonte

Respostas:

71

Eu recomendo ficar longe de soluções feitas manualmente, pois há um monte de coisas um tanto difíceis que precisam ser resolvidas da maneira certa - como a forma como as transações são tratadas, como as exceções causam reversões, como parar de reverter indefinidamente (mensagens suspeitas), como se integrar com fluxos de trabalho de longa duração para que os limites de gerenciamento de estado se alinhem e muito mais.

Provavelmente, você desejará algum tipo de infraestrutura de mensagens durável / transacional, portanto, sem usar o MSMQ, você ficaria com o Service Broker na plataforma da Microsoft ou alguma outra alternativa como o ActiveMQ. O MSMQ tem a vantagem de já estar instalado em todas as máquinas Windows, ao contrário do Service Broker, que não é.

Em termos de escolha entre NServiceBus, Mass Transit e Rhino Service Bus - esta resposta Stackoverflow comparando NServiceBus ao MassTransit seria um bom lugar para começar.

Em nossa versão 3.1, estamos apresentando o NSB Studio - um conjunto de ferramentas de modelagem integrada do Visual Studio que permite modelar seu sistema em um nível mais alto de abstração e fazer com que grande parte da configuração e inicialização do NServiceBus seja feita para você automaticamente. Eu diria que isso realmente inclina a balança a favor do NServiceBus.

Espero que ajude.

Isenção de responsabilidade: eu sou o autor de NServiceBus.

Udi Dahan
fonte
25
O Rhino Service Bus é muito centrado em Castle. Se você não está familiarizado / confortável com o Castle como parte central da arquitetura de seu aplicativo, pode ter alguma dificuldade com ele. NServiceBus e Mass Transit ou mais independente de contêiner. NServiceBus vem com um "servidor de aplicativos" que lida com a hospedagem de seu código, bem como com a alteração das implementações de infraestrutura ativa (como in-memory, MSMQ e DB) conforme você faz a transição de seu sistema de dev, test e prod. Ele também vem com recursos de teste de unidade para sua lógica de tratamento de mensagens e processos de longa duração. Não acredito que o MassTransit tenha isso.
Udi Dahan
35
Provavelmente, vale a pena notar que Udi é o AUTOR do NServiceBus e, portanto, sua opinião pode ser um pouco tendenciosa aqui. :) Posto isto, concordo plenamente e defendo a utilização do NServiceBus pelas mesmas razões que ele fez.
skb
8
@skb: concordou! Udi, você realmente deve dar algum tipo de isenção de responsabilidade ao responder às perguntas do nservicebus, especialmente aquelas como esta!
Andy
14
Ainda estou me acostumando com o fato de que as pessoas agora estão descobrindo o NServiceBus que não sabem que eu o criei
Udi Dahan
5
@UdiDahan: Como o nServiceBus é "open source"? Publicar o código-fonte sem uma licença para usá-lo não contribui em nada para o espírito do código-fonte aberto, que é o compartilhamento. Apoio totalmente o seu direito de ganhar a vida vendendo software (faço o mesmo), mas acho que seria muito mais preciso se você não procurasse a solução (pós 2.0) como open source.
Eric J.
52

NServiceBus é um bom produto, mas cuidado com os problemas de licenciamento. Tem tendência a alterar a política de licenciamento conforme o desejo dos autores. Dê uma olhada, por exemplo, nas informações da licença antiga.

Pode acontecer que no meio do desenvolvimento do seu projeto você descubra que tem que pagar muito dinheiro pelo NServiceBus.

Também a versão gratuita tem limitações de desempenho.

Mass Transit é um código aberto gratuito, não tem limitações e está sob a licença Apache 2.0.

Eu não usei o Rhino Service Bus .

Alex Burtsev
fonte
1
Na verdade, iremos fornecer uma nova licença com a versão 3.1 que permitirá que você execute-o em várias máquinas gratuitamente (embora em níveis mais baixos de rendimento).
Udi Dahan
11
Mass Transit é o seu homem. É grátis; sem restrições de licenciamento. Se você pode fazer sem um designer de fluxo e pode rolar à mão o seu próprio, então você não pode vencê-lo. Ele também pode ser colocado em cima do RabbitMQ e o MSMQ tem plug-ins do Azure da comunidade. MassTranit + RabbitMQ provou ser um excelente ambiente estável e muito rapidamente permite que você coloque seus consumidores / produtores em funcionamento.
Bigtoe
3
Considere também EasyNetQ (wrapper simples em torno de rabbitMQ) UDI surpreso não pesa mais nas discussões com sugestões 4 boas alternativas 2 nServiceBus? O que eu quero dizer. ajudar as pessoas na jornada de mensagens nos estágios iniciais. Existem várias maneiras simples (gratuitas) de 2 começar; realmente não importa o que você usa, contanto que seja fácil e idealmente gratuito; (grátis para jogar e grátis para implementar de verdade, e grátis para mudar mais tarde) Quando estiver crescendo, você desenvolverá sua própria lista de preocupações; nesse ponto, produtos mais maduros serão uma decisão fácil, com justificativas de custo fáceis, por exemplo, nservicebus.
código de neve
A partir do MassTransit 4.0, o MSMQ não é mais compatível ( masstransit-project.com/MassTransit )
MyGGaN
25

Uma atualização para o estado de Rhino vs NServicebus:

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

InfoQ para Ayende: Você escreveu anteriormente um barramento de serviço para .NET, a saber, Barramento de serviço Rhino. Os usuários do Rhino Service Bus agora devem reconsiderar e mudar para o NServiceBus?

Ayende: Eu construí o Rhino Service Bus por volta de 2008. Eu o construí principalmente porque não estava feliz com o estado dos outros ônibus de serviço na época. Tive diferentes preocupações e orientações ao construir meu ônibus de serviço, mas isso foi há 4 anos. Naquela época, eu acho que o NServiceBus fez grandes avanços para se tornar um produto mais fácil de usar e ter uma história de desenvolvimento muito melhor. Se eu estivesse começando com ônibus de serviço hoje, duvido muito que estaria construindo meu próprio.

Ciprian Teiosanu
fonte
9

uma possível desvantagem de qualquer coisa baseada no MSMQ é a restrição no tamanho máximo da mensagem. IIRC tem aproximadamente 4 MB, o que você pode facilmente encontrar se estiver lidando com arquivos grandes e armazenando o conteúdo do arquivo dentro da mensagem.

secagem rápida
fonte
7
Curiosamente, a maioria das filas baseadas em nuvem nem mesmo suporta cargas úteis de 100 KB, então isso é algo que precisará ser levado em consideração por muitos aplicativos no futuro.
Udi Dahan
32
Em Enterprise Integration Patterns (Woolf, Hohpe), o padrão Claim Check trata especificamente dessa preocupação. Uma referência à carga útil grande é mantida apenas na mensagem, mantendo a mensagem pequena. Tamanhos grandes de mensagens podem causar estragos no rendimento de um sistema de mensagens.
Chris Patterson
4
Isso não é um problema com o NServiceBus, pois ele tem um conceito de barramento de dados, que funciona de maneira transparente em torno das limitações de tamanho.
Khalid Abuhakmeh