作为 NServiceBus 的原作者,我可能对自己的技术有点偏颇,但我会尽量保持平衡。
运输支持
NServiceBus 和 MassTransit 都支持RabbitMQ和Azure Service Bus,但 NServiceBus 也支持:
关于 RabbitMQ 的话题
可以说 NServiceBus 对 RabbitMQ 有更强的支持——例如,在它的延迟交付功能中,而 Mass Transit声明他们的“插件仍被认为是实验性的。它由 MassTransit 支持,但我们不能保证除了插件之外的任何东西保证自己。”
我们还与 RabbitMQ 团队密切合作,为 .net SDK 做出贡献,以造福整个生态系统。
谈到 Azure 服务总线
我们与 Azure 服务总线团队的合作水平更高,他们的 .net 核心 SDK 有超过 70 个 PR。
当您使用 NServiceBus 时,您将受益于该知识的全部深度。
工装
这是最大的不同。
一旦你建立了一个实质性的系统,了解所有不同的移动部件如何相互通信就变得非常重要。除了通过诊断源与 Application Insights 或 Open Trace 等第 3 方工具进行小规模集成外,MassTransit 在这方面没有太多优势。
NServiceBus 周围的服务平台走得更远,使您能够使用ServiceInsight查看所有端点的序列图:
您还可以获得所有端点和消息的逻辑视图:
从本质上讲,您可以获得系统架构的实时文档。
管理与监控
这是 MassTransit 没有太多资源的另一个领域。当您集成的第 3 方系统变得不可用并且系统中的一堆消息最终进入错误队列时,MassTransit 的唯一解决方案是让您稍后使用RabbitMQ Shovel 插件手动将这些消息移回。
NServiceBus 周围的服务平台包括对该错误队列的监控、用于查看这些错误原因的图形工具,以及重放这些失败消息的组并查看它们实际上是否在一个简单的 Web 应用程序中得到成功处理的能力称为ServicePulse。
还有定期运行的健康检查的可视化,可以在消息开始失败之前提供问题的早期警告。
最后,平台中提供了性能监控:
在生产支持方面,您确实获得了完整的软件包。
长期支持和向后兼容性
虽然 Mass Transit 的人一直非常擅长帮助任何在Gitter或他们的Google Group上对此有疑问的人,但我认为他们不会为旧版本提供错误修复。当您的生产系统已经存在了几年,并且您不能一直升级所有内容时,这开始变得很重要。
NServiceBus支持包括:
- 每个主要版本 2 年以上
- 额外 2 年的扩展支持
- 保证对关键问题的响应时间
- 24x7 可用性
咨询与培训
从线下的角度来看,NServiceBus 上有世界各地的公共课程,还有许多顾问可以被带到现场来启动项目或在出现问题时提供帮助。我听说有几家公司决定从 MassTransit 切换到 NServiceBus,因为他们在需要时无法派人到现场。
许可
有些人仍然不知道 NServiceBus 是免费供个人使用和初创公司使用的。
在商业用途方面,NServiceBus 周围的许可模型非常灵活,正如广泛的客户所表明的那样,并且可以很好地证明管理的合理性。当然,使用 MassTransit,许可是免费的。
希望在某种程度上有所帮助。