作为 NServiceBus 的原始作者,我可能会对自己的技术有些偏见,但我会尽量保持客观。
传输协议支持
NServiceBus 和 MassTransit 都支持
RabbitMQ 和
Azure Service Bus,但是 NServiceBus 还支持以下协议:
帮助你不仅仅是这样,NServiceBus还通过其Transport Bridge使您能够在不同的传输上透明地运行不同的端点,在将本地系统与新的云功能集成时非常重要。
关于RabbitMQ
可以说NServiceBus对RabbitMQ的支持更强大-例如在其延迟交付功能方面,而Mass Transit则声明他们的“插件仍被认为是实验性的。它得到了MassTransit的支持,但我们不能保证除插件本身外还有其他东西。”
我们还与RabbitMQ团队密切合作,为整个生态系统的利益
贡献.net SDK,并继续因此而受到认可,例如在这条推文中:
https://twitter.com/RabbitMQ/status/1547946916419231744。
![enter image description here](https://istack.dev59.com/fHt8u.webp)
当谈到Azure Service Bus时
我们与Azure Service Bus团队的合作水平更高,已经对他们的.net core SDK进行了70多个PR。
当您使用NServiceBus时,您将受益于这些知识的全部深度。
工具
这是最大的区别。
一旦您建立了一个实质性的系统,了解所有不同移动部件如何相互通信变得非常重要。MassTransit在这个领域没有太多内容,除了通过Diagnostic Source到第三方工具(如Application Insights或Open Trace)的小型集成。
NServiceBus周围的服务平台走得更远,使您能够使用ServiceInsight查看所有端点的序列图:
![Sequence diagrams with ServiceInsight](https://istack.dev59.com/SJyPt.webp)
你还可以获得所有端点和信息的逻辑视图:
![The logical view of an NServiceBus system](https://istack.dev59.com/Hx7TP.webp)
实际上,您可以获得系统架构的实时文档。
管理和监控方面,MassTransit并不是很强大。当您正在集成的第三方系统不可用且您系统中有许多消息排队到错误队列时,MassTransit的唯一解决方案是使用
RabbitMQ Shovel插件手动将这些消息移回。NServiceBus周围的服务平台包括监视该错误队列、图形化工具以查看错误原因以及能够重放那些失败消息组并
在名为 ServicePulse 的简单Web应用程序中查看它们实际上已成功处理。
![Failed message grouping with ServicePulse](https://istack.dev59.com/ugtvH.webp)
此外,还有定期运行的健康检查的可视化,可以在消息开始失败之前提供问题的早期警告。
最后,平台上提供了性能监控:
![NServiceBus performance monitoring](https://istack.dev59.com/lZDYb.webp)
当涉及到生产支持时,您真的可以获得全方位的服务。
长期支持和向后兼容性
虽然 Mass Transit 的开发人员一直非常擅长在 Gitter 或他们的 Google Group 上帮助任何有疑问的人,但我认为他们不会为旧版本提供错误修复。当您的生产系统运行了几年,而您不能一直升级所有内容时,这就变得很重要。
NServiceBus 的 support includes:
风险管理
Chris Patterson是MassTransit的创造者,他是我的老朋友,多年来他对社区的贡献都是出于对这项工作的热爱,我对他充满敬意。
问题在于,多年来,只有Chris一个人在开发和维护MassTransit,而且他也是唯一一个能够胜任这项工作的人。如果他出了什么事情(我祝他最好的),我真的不知道谁能够接替他的位置。
对于那些希望确保自己建立在坚实基础上的使命关键项目和产品来说,这种风险可能是无法承受的。相比之下,NServiceBus周围的大型组织拥有数十名全职员工,并与Microsoft、AWS和RabbitMQ建立了深入的合作关系,对于这些环境来说,选择NServiceBus可能是更少风险的选择。
咨询和培训
从离线角度来看,全球范围内提供有关NServiceBus的公共课程以及许多顾问可以被引进现场启动项目或在出现问题时提供帮助。我听说过几家公司决定从MassTransit转向NServiceBus,因为他们在需要时找不到现场支持。
许可证
有些人可能还不知道关于NServiceBus的一件事,那就是它对于个人使用和创业公司是免费的, 甚至对于一些有限的生产使用也是如此。
![FREE for personal use and startups](https://istack.dev59.com/huDZQ.webp)
当涉及到商业使用时,NServiceBus的许可模型非常灵活,正如广泛的客户群所表明的那样,并且可以很好地向管理层进行证明。当然,对于MassTransit,许可是免费的。