NServiceBus与MassTransit

我正在努力与NServiceBus和MassTransit的利弊名单。

现在我知道这里已经有了一个线程,但是它并没有真正回答我的问题。

这是我迄今读过的:

  1. NServiceBus,是的,它是许可的,它不是免费的。
  2. MassTransit,是的,它是开源的,但文件似乎缺乏。

NServiceBus较老,并有更多的参考。 很难find关于MassTransit的东西,但我是开放的。 但是,我必须提供一个坚实的解决scheme,所以我不得不问。

所以请,有两个框架经验的人。 为什么要selectNServiceBus? 或者为什么要selectMassTransit?

性能,安全性,规模还是?

如果我不得不总结一下,我会说:

如果你需要商业支持,去NServiceBus。 如果您愿意使用论坛作为支持手段,MassTransit是一个不错的select。 到目前为止,开发人员对我们的问题非常敏感。 如果您selectMassTransit,现在您将selectMSMQ和RabbitMQ。 如果你需要DTC去MSMQ。 如果您想要更多的function和更好的pipe理,请使用RabbitMQ。

在我们的项目中,我们从NServiceBus切换到MassTransit有两个原因:

  1. MassTransit是免费的
  2. 我们爱RabbitMQ

我用过这两个框架。 我用了比NServiceBus更长的MassTransit。 这是我看到的亮点。

成本:

  • MassTransit是Apache 2.0许可和免费商业生产使用,而NServiceBus不是。

支持:

  • 正如Udi提到的,​​有一个商业NServiceBus支持的选项,我还没有看到,MassTransit。

运输:

  • MassTransit支持MSMQ和RabbitMQ
  • NServiceBus仅支持MSMQ NServiceBus 4+支持RabbitMQ

RabbitMQ vs MSMQ:

  • MSMQ支持DTC(分布式事务协调器),用于涉及多个机器上多个进程的事务(例如SQL服务器,Windows服务)
  • RabbitMQ拥有出色的pipe理界面
  • MSMQ已经有更长的时间了,是微软的产品
  • RabbitMQ更新,开源,免费,由VMWare赞助
  • MSMQ默认安装在大多数Windows机器上

Udi Dahan和MassTransit家伙(Chris Patterson,Dru Sellers和Travis Smith)都是非常出色的人物。

作为NServiceBus的原作者,我显然偏向于我自己的技术,所以我会尽量保持这种平衡。

更新:现在通过特定服务平台为NServiceBus提供监视和debugging工具,使构build和运行基于消息的系统变得更容易。 凭借完整的技术完整性,我相信这强烈地提示了NServiceBus的平衡。 结束更新

虽然在早期我跟踪了很多MassTransit的开发,但是最近我没有太多的时间去做,所以我认为两种技术本身都是同样好的,并且专注于生态系统。

NServiceBus周围有一个更大的社区,所以如果你需要帮助,有更多的人可以给它。 这就是说,MassTransit的核心团队一直非常善于帮助有问题的人。

使用NServiceBus,公司可以在全球范围内24×7全天候地购买支持并获得有保证的响应时间。 我不相信MassTransit提供类似的产品。

从离线的angular度来看,NServiceBus在世界各地都有公共课程,还有许多顾问可以带来现场启动项目或协助解决问题。 我听说有几家公司决定从MassTransit切换到NServiceBus,因为他们在需要的时候无法到达现场。

我想说NServiceBus的许可模式足够灵活,可以适应任何预算,因为广泛的客户表示,而且可以很好地pipe理。 当然,使用MassTransit,许可是免费的。

希望有一些帮助。

你可以使用Shuttle(FOSS): https : //github.com/Shuttle/shuttle-esb 🙂

文档(总是改进): http : //shuttle.github.io/shuttle-esb/

Shuttle项目已经进行了近2年,并且正在使用生产系统。 这将是一个select与你共鸣的问题。

NServiceBus拥有良好的logging。 我之前在生产系统(1.9)上使用过它,但是因为它已经商业化了(我开始使用Shuttle)。

我还没有尝试MassTransit。

我猜你所有的select都会有基本的(command / event / pub-sub)。 然而,NServiceBus确实有传说和数据总线的东西,虽然我觉得很容易处理服务总线本身以外的数据,如在你的端点消息处理程序。 我不知道MassTransit是否有sagas /数据总线,但Shuttle确实没有。

另一个考虑可能是你打算如何使用服务总线。 如果要成为产品的一部分,那么对于诸如NServiceBus这样的商业select,您需要考虑产品用户的成本影响,虽然它仍然是内部开发中需要考虑的事情,但它当然可以有道理的。