RabbitMQ 与 NServiceBus

问题描述

我希望将 RabbitMQ 或 NServicebus 添加到我的环境中,以便在微服务之间进行异步消息传递。

RabbitMQ 和 NServiceBus 有什么区别?我认为 RabbitMQ 更合适,因为在人们做过类似事情的文章中提到了它。如果 RabbitMQ 是最好的,我会用 NServiceBus 做什么?

解决方法

“RabbitMQ 与 NServiceBus”的问题实际上应该是“本机消息传递技术与消息传递中间件”的问题。

首先,如果没有 RabbitMQ,NServiceBus 就不会存在。或 Azure 服务总线。或亚马逊 SQS。所有这些消息传递技术之间的联系是开发您的解决方案的能力,该解决方案与消息传递技术无关,并且可以从本地技术提供的大部分内容中受益。这是苹果与苹果的比较吗?不。NServiceBus 作为一个中间件抽象,是固执己见的,并且有一些规定的东西。通常,这些会通过您从抽象中获得的价值来补偿。这带来了下一点。

专注于您的系统/业务,而不是消息传递技术。序列化/反序列化、重试、处理失败的消息、连接、审计、消息对话、关联、长时间运行的消息传递、乱序消息传递、批处理等。列表很长。 NServiceBus 负责解决这个问题。显然,如果您不需要其中的 95% 并且有一个简单的场景,那么抽象就显得过分了。但如果你有一些不那么微不足道的东西?

大部分投资发生在初始开发阶段的假设是一种谬论。当初始开发结束时,成本影响会逐渐增加——需要那些小的错误修复、SDK 更改和微小的添加。通常当参与本土解决方案的开发人员不再对特定技术感兴趣时。或者更好的是,转移到某事或其他地方。现在您有两个项目,预算单一。一个是业务系统,另一个是已经成为成熟框架的本土消息中间件。

我认为 RabbitMQ 更合适,因为在人们做过类似事情的文章中提到了它。

我不会打那个电话。仅仅因为所有新闻媒体都在谈论负面事件并不意味着这些事件有任何好处。此外,我不会仅仅依赖 StackOverflow 上一个或几个人的回应。或任何其他网站。做你的研究,因为没有人比你更了解你的项目需要什么。引用伟大的90s song

谨慎购买谁的建议,但对提供建议的人要有耐心

免责声明:我正在为 NServiceBus 代码做出贡献。

,

您可以在另一个问题中找到更多信息: What are advantages of using NServiceBus + RabbitMQ against pure RabbitMQ?

作者在这篇博文中对其进行了扩展: https://www.davidboike.dev/2017/12/sure-you-can-just-use-rabbitmq/

还有这个 YouTube 视频很好地涵盖了这个主题: https://www.youtube.com/watch?v=Zl4XrVBx16U

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...