Windows Service Bus为MSMQ添加了什么?

37

我希望能够做出明智的选择,选择一个简单的发布/订阅架构。

因此,我想知道:服务总线相比 MSMQ 有什么优势
服务总线有哪些缺点

谢谢您的启示!


1
+1,有趣的问题。我不太了解Windows Service Bus,但我很想看到它与MSMQ的详细比较。我找到了这个(请参见文章下面的评论):http://shanthuk.com/2012/11/05/windows-service-bus-vs-msmq/说句题外话,我已经成功地在我的架构中多次使用了MSMQ,并且绝对推荐它:轻量级、强大、事务性。请参阅https://dev59.com/ql_Va4cB1Zd3GeqPXuDW#9077925。 - ken2k
我建议您使用NServiceBus http://nservicebus.com/CodeFirstGettingStarted.aspx - Kamil Budziewski
+1. 很好的问题。我认为Windows Service Bus可以被看作是“本地Azure服务总线”。它并没有真正“增强MSMQ”,而是一个全新的系统,将消息存储在SQL服务器中。 - Simon Mourier
这应该是有帮助的,尽管它将WSB与RabbitMQ进行了比较。http://geekswithblogs.net/michaelstephenson/archive/2012/08/12/150399.aspx - Wiktor Zychla
将MSMQ视为传输协议。 MSMQ是高级应用程序(例如服务总线)的支持层。 - John Breakwell
显示剩余2条评论
2个回答

21
主要的功能区别是,Service Bus提供了开箱即用的消息交换语义支持,例如通过发布-订阅进行基于主题的路由。
另一方面,MSMQ是一个轻量级的存储转发队列系统,支持点对点单向消息传递。
Service Bus:
1. 依赖于SQL Server,并且 2. 是一个代理这可能被认为是一个缺点
如果您正在寻找pub-sub框架,那么目前流行的一个(在单线程模式下免费)是NServiceBus,它位于MSMQ之上,但具有可替换的传输方式。

1
谢谢你的答案,非常有用并且有链接支持。点赞为你投上一票,同时将悬赏奖励加给你 :) - ken2k
1
@ken2k非常慷慨...老实说,我并没有期望得到赏金,而且我很惊讶没有比我的更好的答案被发布。我认为这个主题值得更好的讨论。 - tom redfern
感谢您提供有关总线、代理和发布/订阅模式差异的页面链接 - 很有启发性。 - eddiewould

9

优点

  • Service Bus允许您通过tcp和http发布消息,这很酷,并且使得解耦更加容易。
  • Service Bus是一个SQL数据库,因此灾难恢复要简单得多,成本也更低。

缺点

  • Service Bus是集中式的,而MSMQ是联邦式的,因此潜在的可伸缩性更高。尽管您可以在WSB中使用更多节点进行扩展。
  • 在发布之前,您需要与中央总线建立实时连接。因此,MSMQ作为联邦式(在每台计算机上)使其对客户端更加可用。

但是,人们正在将MSMQ用作本地存储,然后在连接可用时将其推送到总线上。

目前我们正在使用Service Bus而不是MSMQ,并且体验良好。


你能更详细地描述一下最后的情况吗?使用 MSMQ 作为本地存储与 SB?这是否意味着您始终将客户端消息推送到 MSMQ 队列中,那么 SB 如何利用它? - Thiago Silva
1
您的Web服务器已安装了MSMQ,Sb服务器也是如此。您的客户端站点在最初尝试直接发布到Sb时实现了Sb重试策略。如果这些失败,则将消息粘贴到本地MSMQ上,并使用内置的存储和转发机制传递到Sb服务器上的MSMQ(当其变为可用状态时)。在Sb服务器上有一个Windows服务,可以将MSMQ消息加载到Sb队列中。或者,将更多的Sb节点添加到您的农场中以获得更多的可用性。 - jonho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接