我一直在阅读有关将NServiceBus升级到新的主要版本(例如从6.x.x版本升级到7.x.x版本)的含义。
在ParticularDocs网站上,the Upgrade Guides说:
由于具有线兼容性保证,因此不需要 解决方案中的每个端点都使用相同版本的NServiceBus。 这意味着可以对单个端点进行升级,测试和 在升级另一台之前部署到生产中。
但是,如果您读到有关Unobstrusive Mode Messages的内容,则表示:
可以使用普通类或接口定义消息协定。 为了使NServiceBus在扫描程序集时找到这些类,它们 需要使用IMessage接口进行标记,该接口本质上说, “这是消息定义”。这允许去耦消息 来自NServiceBus程序集的合同。
当有不同的服务时,此依赖关系可能导致问题 运行不同版本的NServiceBus。 乔纳森·奥利弗(Jonathan Oliver)拥有great write up on this very subject。
这对于命令来说并不重要,因为它们总是被使用 在单一服务范围之内,公平地要求 服务以使用相同版本的NServiceBus。但是当涉及到 事件,这变得更加成问题,因为它需要服务 都使用相同版本的NServiceBus,从而迫使它们 一次升级所有NServiceBus。
前者告诉我们,独立升级节点没有问题,但后者似乎表明,对于消息程序集,我们必须保留相同的版本并一次全部升级。
如果我没有误会:
由于我的节点依赖于我的消息程序集,所以当我升级一个节点时,我还必须将它们的依赖项升级到相同的主版本,这样我也将不得不升级我的消息程序集。使用这些相同消息程序集的其他节点也将需要升级。这样可以扩展我所有系统的升级链。
唯一避免这种情况的方法是使用Unobstrusive Mode Messages
?
我们拥有实现IEvent
或ICommand
的所有消息。现在更改为Unobstrusive Mode Messages
会带来不便。
答案 0 :(得分:0)
经过一番挖掘之后,有一个我忽略的解决方案,您可以使用程序集重定向,它应该适用于v 5.x及更高版本。
希望这会有所帮助