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