实现消息总线架构

Posted

技术标签:

【中文标题】实现消息总线架构【英文标题】:Implementing a Message Bus architecture 【发布时间】:2010-10-17 21:14:10 【问题描述】:

我目前正在为我公司的新消息总线架构进行分析和设计。我过去曾尝试过 MSMQ 做类似的事情,它运行良好,并且正在考虑为这个项目再次做同样的事情,但使用 WCF 作为 API 而不是使用 System.Messaging API。有人在 WCF 中使用过 MSMQ 吗?比 System.Messaging API 更容易使用吗?与 System.Messaging 相比,使用 WCF 有什么好处,反之亦然?

【问题讨论】:

【参考方案1】:

恕我直言,有这么多优秀、灵活且经过验证的总线架构可供选择(NServiceBus、Mass Transit、Rhino Service Bus),实现您自己的架构将是一个很大的NIH。这不是一项简单的任务。

Udi 在this message 中描述得很好。

【讨论】:

mausch 感谢您提供有关现有消息总线系统的信息。我不知道已经有这样的系统向公众开放! 这如何回答 OP 的问题,即他应该直接使用 MSMQ 还是 WCF 与 MSMQ 绑定RoadWarriors下面的回答我觉得更符合OP的问题。【参考方案2】:

抱歉,来晚了,但希望我的回答对 MSMQ 4.0 用户有用(但不一定对更高版本的用户有用)。

WCF Queuing 和 System.Messaging 都是 MSMQ API 的包装器。 WCF 更加复杂和复杂,但确实具有以下好处:

应用程序业务流程的 OO 视图,而不是其通信管道。 免费的端到端消息加密和身份验证。 System.Messaging 仅支持有线加密,不支持商店加密。 如果您愿意,可以在 IIS 中托管,而不是构建自己的自定义主机。 免费消息关联。这使您可以自动将消息分组到会话中。 事务性批处理免费。

【讨论】:

使用 WCF,您无需安装 IIS 即可提供任何类型的服务。误导性答案。 @argatxa:我是说使用 WCF,您可以在 IIS 中托管。我同意您不需要在 IIS 中托管。我将编辑我的答案以反映这一点。 @RoadWarrior 您的第一个比较是正确的,但是您在其他比较中是不正确的。 1) MSMQ 和 WCF 都有相关 ID。 2) MSMQ 有事务 3) MSMQ 使用身份验证和授权。也可以说 MSMQ 比 WCF 更难仅仅因为它是一个 MOM API @Micky:这个答案是 5 年前的,讨论了 MSMQ 4.0。我认为您应该根据当前版本(6.3)创建自己的答案。我早就转向 RabbitMQ。【参考方案3】:

Apache ActiveMQ(开源)消息代理也有一个 .NET 客户端:

http://activemq.apache.org

与 Apache Camel 和 Apache ServiceMix 一起,企业集成模式和企业服务总线系统易于设置。

【讨论】:

以上是关于实现消息总线架构的主要内容,如果未能解决你的问题,请参考以下文章

谈消息总线客户端的多线程实现

基于RabbitMQ的消息总线架构设计

Spring Cloud构建微服务架构消息总线(续:Kafka)

微服务实战:落地微服务架构到直销系统(将生产者与消费者接入消息总线)

微服务实战:落地微服务架构到直销系统(构建消息总线框架接口)

Bus:消息总线