Estou lutando com uma lista de prós e contras em relação ao NServiceBus e MassTransit.
Agora eu sei que já existe um tópico aqui, mas ele realmente não responde às minhas perguntas.
Aqui está o que li até agora:
- NServiceBus, sim, é licenciado e não vem de graça.
- Mass Transit, sim, é open source, mas a documentação parece estar faltando um pouco.
NServiceBus é mais antigo e tem mais referências. É difícil encontrar informações sobre MassTransit, mas tenho a mente aberta. No entanto, tenho que entregar uma solução sólida e, portanto, tenho que perguntar.
Então, por favor, alguém com experiência em ambos os frameworks. Por que devo escolher NServiceBus? OU Por que devo escolher o MassTransit?
É desempenho, segurança, escala ou?
fonte
Como o autor original de NServiceBus, provavelmente sou um pouco inclinado a minha própria tecnologia, mas tentarei manter isso o mais equilibrado possível.
Suporte de transporte
Ambos NServiceBus e MassTransit são compatíveis com RabbitMQ e Azure Service Bus , mas NServiceBus também suporta:
Sobre o tópico RabbitMQ
Pode-se argumentar que NServiceBus tem suporte mais forte para RabbitMQ - por exemplo, em sua funcionalidade de entrega atrasada enquanto o Mass Transit afirma que seu "plugin ainda é considerado experimental. É suportado por MassTransit, mas não podemos garantir nada mais do que o plugin garante-se. "
Também trabalhamos em estreita colaboração com a equipe RabbitMQ, contribuindo com o .net SDK para o benefício de todo o ecossistema.
Quando se trata de Azure Service Bus
O nível de colaboração que temos com a equipe do Azure Service Bus é ainda maior, com mais de 70 PRs para seu SDK principal .net .
Ao usar o NServiceBus, você se beneficia de toda a profundidade desse conhecimento.
Ferramental
Essa é a maior diferença.
Depois de construir um sistema substancial, ter visibilidade de como todas as diferentes partes móveis conversam entre si torna-se muito importante. O MassTransit não tem muito nesta área além de uma pequena integração por meio de uma fonte de diagnóstico com ferramentas de terceiros, como o Application Insights ou Open Trace.
A plataforma de serviço em torno do NServiceBus vai um pouco além, dando a você a capacidade de ver diagramas de sequência em todos os endpoints com ServiceInsight :
Você também pode obter a visão lógica de todos os seus endpoints e mensagens:
Em essência, você obtém documentação viva da arquitetura do seu sistema.
Gestão e Monitoramento
Esta é outra área onde o MassTransit não tem muito. Quando um sistema de terceiros com o qual você está se integrando fica indisponível e um monte de mensagens em seu sistema acabam na fila de erros, a única solução que o MassTransit tem para mover manualmente essas mensagens de volta mais tarde usando o plugin RabbitMQ Shovel .
A plataforma de serviço em torno do NServiceBus inclui o monitoramento dessa fila de erros, ferramentas gráficas para ver quais são as causas desses erros, bem como a capacidade de reproduzir grupos dessas mensagens com falha e ver se elas foram realmente processadas com sucesso em um aplicativo da web simples chamado ServicePulse .
Também há a visualização de verificações de saúde que são executadas periodicamente que podem fornecer avisos antecipados de problemas antes que as mensagens comecem a falhar.
E, finalmente, há o monitoramento de desempenho disponível na plataforma:
Você realmente obtém o pacote completo quando se trata de suporte à produção.
Suporte de longo prazo e compatibilidade com versões anteriores
Embora o pessoal do Mass Transit sempre tenha sido extremamente bom em ajudar qualquer pessoa que tenha dúvidas sobre isso no Gitter ou em seu Grupo do Google , não acho que eles fornecem correções de bugs em versões mais antigas. Quando seus sistemas de produção já existem há alguns anos e você não pode simplesmente atualizar tudo o tempo todo, isso começa a ser importante.
Com NServiceBus, o suporte inclui :
Consultoria e Treinamento
De uma perspectiva offline, existem cursos públicos disponíveis em todo o mundo no NServiceBus, bem como muitos consultores que podem ser trazidos para o local para iniciar um projeto ou ajudar em caso de problemas. Já ouvi falar de várias empresas que decidiram mudar do MassTransit para NServiceBus porque não conseguiram colocar alguém no local quando precisavam.
Licenciamento
O que algumas pessoas ainda não sabem sobre o NServiceBus é que ele é GRATUITO para uso pessoal e inicializações .
Quando se trata de uso comercial , os modelos de licenciamento em torno do NServiceBus são muito flexíveis, como indica o amplo espectro de clientes, e podem ser bem justificados para a administração. Claro, com o MassTransit, o licenciamento é gratuito.
Espero que ajude de alguma forma.
fonte
Eu sei que é tarde para responder a esta pergunta, mas pelo bem da diversão, eu tenho que mencionar Rebus (do qual eu sou o autor principal).
O Rebus tem cerca de 8 anos agora e tem sido usado para movimentar dinheiro e controlar usinas de energia desde o início.
Ele oferece suporte à maioria dos sistemas básicos de enfileiramento, como MSMQ, RabbitMQ, Azure Service Bus, Azure Storage Queues, Amazon SQS, etc., mas também oferece suporte a coisas mais engraçadas, como o uso de MSSQL, PostgreSQL e Oracle como transportes.
O wiki de documentação é bastante abrangente, embora muitas pessoas pareçam se dar bem, porque as APIs do Rebus são facilmente descobertas.
Rebus sempre foi (e sempre será) totalmente gratuito. É licenciado pelo MIT, então você pode basicamente fazer com ele o que quiser.
Se você acabar se tornando um usuário sério do Rebus e precisar de um contrato de suporte formal e ferramentas extras, você pode assinar o Rebus Pro , que é oferecido pela Rebus FM (a empresa por trás da Rebus).
O "ferramental extra" mencionado acima atualmente vem na forma de Fleet Manager , que pode ajudar com as coisas. Por exemplo, o Fleet Manager substitui completamente as filas de erros , portanto, as mensagens com falha são armazenadas lá. Isso significa que as mensagens com falha podem ser visualizadas, gerenciadas e repetidas a qualquer momento com apenas alguns cliques no Fleet Manager.
fonte
Você sempre pode usar Shuttle (FOSS): https://github.com/Shuttle/shuttle-esb :)
Documentação (sempre melhorando): http://shuttle.github.io/shuttle-esb/
O projeto Shuttle já está em andamento há quase 2 anos e utiliza sistemas de produção. Será uma questão de escolher o que ressoa em você.
NServiceBus tem um bom histórico. Eu o usei anteriormente em um sistema de produção (1.9), mas não desde que se tornou comercial (o ponto em que comecei com o Shuttle).
Eu não experimentei o MassTransit.
Eu acho que todas as suas opções terão o básico (comando / evento / pub-sub). No entanto, NServiceBus tem sagas e as coisas do barramento de dados, embora eu ache que seja fácil lidar com dados fora do barramento de serviço em si, como em seus manipuladores de mensagens de endpoint. Não sei se o MassTransit tem sagas / barramento de dados, mas o Shuttle certamente não tem.
Outra consideração é provavelmente como você pretende usar o barramento de serviço. Se for parte de um produto, para uma opção comercial como NServiceBus, você precisaria considerar as implicações de custo para os usuários do seu produto e, embora ainda seja algo que precise ser considerado para desenvolvimento interno, certamente pode ser justificado.
fonte
Apenas para dar uma resposta mais atualizada, desenvolvi profissionalmente com ambos os ecossistemas e agora ambos oferecem suporte a uma ampla gama de tecnologias MQ e .NET Core.
Usei o NServicebus alguns anos atrás em um novo produto em nuvem, precisávamos do .NET Core, que o Mass Transit não suportava na época. Eu tenho que dizer - é uma coisa linda de usar como desenvolvedor, há muitos liners legais, ótimas ferramentas / monitoramento e a documentação é realmente boa.
Vários níveis de suporte e licença estão disponíveis e, em uma ocasião em que precisamos de alguma ajuda, era de boa qualidade.
Estou usando o Mass Transit por alguns meses em uma nova empresa, e eles preferem ter uma biblioteca de código aberto gratuita. A jornada tem sido um pouco mais difícil - a documentação para MT está faltando em alguns lugares e muitos exemplos / problemas estão desatualizados. Não existe uma gama completa de recursos avançados, mas você pode não precisar deles para seu caso de uso.
Ele funciona bem, porém, e os desenvolvedores de MT parecem se esforçar muito para oferecer suporte a seu software de fonte aberta - muito além do que você poderia razoavelmente esperar.
Então, pessoalmente, meu TLDR seria - obtenha NServicebus se sua empresa puder ser convencida a pagar por ele, mas o MT é uma alternativa útil e o melhor que você pode obter gratuitamente.
fonte