NServiceBus 与 Windows ServiceBus

Posted

技术标签:

【中文标题】NServiceBus 与 Windows ServiceBus【英文标题】:NServiceBus vs Windows ServiceBus 【发布时间】:2012-07-17 16:37:33 【问题描述】:

有人能解释一下新发布的 Windows ServiceBus(内部部署,而不是 Azure)和 NServiceBus 之间的区别吗?

寻找 Windows SB 可能缺少的详细答案,因为我熟悉 NSERviceBus 可以做什么:

    它是真正的服务总线,而不仅仅是使用队列的消息代理吗? 能否支持消息多态? (消息子类化其他 支持此层次结构的消息和处理程序 长时间运行的进程和相关性 向外扩展

【问题讨论】:

您能否提供新的 Windows ServiceBus 的链接?我看到的唯一一辆公共汽车是 Azure 的。 msdn.microsoft.com/library/jj193022%28Azure.10%29.aspx 看起来微软的高级项目经理在这里回复了 - social.msdn.microsoft.com/Forums/en-US/servicebuslabs/thread/…。很高兴听到 NSB 团队的消息,看看为什么 NSB 会更好。 【参考方案1】:

我负责 NServicebus 中的 Windows Azure ServiceBus 支持。在我看来,这个新的 Windows Server Servicebus 提供了与 Azure ServiceBus 完全相同的功能。所以在我看来,它与 NServiceBus 而非竞争对手(就像 Windows Azure ServiceBus 一样)将是一个很好的匹配,并且可以用来代替 msmq。

回答你的问题

    新的服务总线是一个使用队列的代理 服务总线上的消息最终只是字符串,服务总线本身没有对消息类型、层次结构、处理程序等的额外支持。通常您会为此使用 WCF 或 NServiceBus。 不支持长时间运行的进程或关联。它确实与 NServiceBus 有一些功能重叠,尽管它可以执行订阅/主题,它也可以延迟消息以及过滤器。 它旨在向外扩展。

希望这有帮助吗?

亲切的问候, 伊夫

【讨论】:

1.那么在 Windows 服务总线中,客户端仍然可以像在 NSB 中那样通过其本地 msmq 发送消息吗?我知道订阅是字符串而不是类型,但它仍然可以像 Bus.Send 一样使用吗?那么如果发生任何崩溃,消息首先存储在本地队列中吗? 2.你还提到Windows SB与NSB很好匹配,可以用来代替msmq?你能详细说明吗?可以描述 NSB 发布中的流程,然后消息转到 x...等等 1.不,队列不是节点本地的,就像 msmq 的情况一样。因此机器需要连接到 SB 服务器才能将消息发送到队列 2。SB 队列提供 nservicebus 处理消息传递所需的持久性和事务性,与 msmq 唯一不同的是节点需要连接到正常工作。 Re:3 在我看来这是不正确的 - 如果这是与服务总线一起使用的 WF 的域,为什么 Windows 服务总线会重复编排功能(长时间运行、相关等)?跨度> 长期运行:上面已回答。不支持消息类型:ContentType:msdn.microsoft.com/en-us/library/… 不支持关联:CorrelationId:msdn.microsoft.com/en-us/library/…

以上是关于NServiceBus 与 Windows ServiceBus的主要内容,如果未能解决你的问题,请参考以下文章

将 RabbitMQ 与 nServiceBus(针对 C#)一起使用与使用 Amazon SQS

NServiceBus 和 Rabbit MQ 或 Kafka

插入后nservicebus删除订阅记录?

不在 NServiceBus 中自动创建队列

使用 WiX 将 NServiceBus.Host 安装为服务

使用NServiceBus开发分布式应用