asp.net-core - RabbitMQ 与 NServiceBus
问题描述
我希望将 RabbitMQ 或 NServicebus 添加到我的环境中,以实现微服务之间的异步消息传递。
RabbitMQ 和 NServiceBus 有什么区别?我认为 RabbitMQ 更适合,因为它在人们做过类似事情的文章中被提及。如果 RabbitMQ 是最好的,我会用 NServiceBus 做什么?
解决方案
“RabbitMQ vs NServiceBus”这个问题应该是“原生消息传递技术 vs 消息传递中间件”的问题。
首先,如果没有 RabbitMQ,NServiceBus 就不会存在。或 Azure 服务总线。或亚马逊 SQS。所有这些消息传递技术之间的联系是能够开发与消息传递技术无关的解决方案,并从本机技术所提供的大部分内容中受益。是苹果对苹果的比较吗?不。作为中间件抽象的 NServiceBus 是固执己见的,并且有一些规定的东西。通常,这些会由您从抽象中获得的价值来补偿。这带来了下一点。
专注于您的系统/业务,而不是消息传递技术。序列化/反序列化、重试、处理失败的消息、连接、审计、消息对话、关联、长时间运行的消息、乱序消息、批处理等。列表很长。NServiceBus 负责这一点。显然,如果您不需要其中的 95% 并且有一个简单的场景,那么抽象是多余的。但是如果你有一些不是那么微不足道的东西呢?
大部分投资发生在初始开发阶段的假设是错误的。当初始开发结束时,成本影响正在逐渐增加——需要那些小的错误修复、SDK 更改和微小的添加。通常,当参与自主解决方案的开发人员不再对特定技术感兴趣时。或者更好的是,转移到某事或其他地方。现在您有两个项目,只有一个预算。一个是业务系统,另一个是已经成为成熟框架的国产消息中间件。
我认为 RabbitMQ 更适合,因为它在人们做过类似事情的文章中被提及。
我会避免打那个电话。仅仅因为所有新闻媒体都在谈论负面事件并不意味着这些事件有任何好处。此外,我不会仅仅依靠 StackOverflow 上的一个或几个人的响应。或任何其他网站。做你的研究,因为没有人比你更清楚你的项目需要什么。引用一首 90 年代的好歌:
小心你购买谁的建议,但对提供它的人要有耐心
免责声明:我正在为 NServiceBus 代码做出贡献。
推荐阅读
- java - 如何在 Spring 5 控制器中声明性地使用 JWT 授权?
- core-data - 核心数据谓词——有什么好处?
- c - C 标准库中的头文件可以包含另一个头文件吗?
- amazon-web-services - 使用 AWS cognito 进行匿名身份验证
- javascript - JS React在字符串中设置变量
- c - 按 8x8 块分割 BMP 图像
- ocaml - OCaml 崩溃时缺少信息
- ruby-on-rails - 如何应对 webpacker 弃用
- python - 当您事先知道某些输入会出现问题时,使用 try/except 块来检查函数是否可以安全运行是一种好习惯吗?
- xamarin.forms - 使用自定义标题视图更改 ContentPage 的内容