在 NSB 的 3.2.6 版中,我将端点映射到我的应用程序配置中,如下所示:
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Foo.Bar.Baz1, Foo.Interfaces" Endpoint="Foo.Bar.Monitor" />
<add Messages="Foo.Bar.Baz2, Foo.Interfaces" Endpoint="Foo.Bar.Monitor" />
<add Messages="Foo.Bar.Baz3, Foo.Interfaces" Endpoint="Foo.Bar.Monitor" />
</MessageEndpointMappings>
</UnicastBusConfig>
这工作得很好。当我升级到 NSB 3.3.8 时,我看到端点映射的 API 发生了变化,特别是该Messages
属性已弃用,因此我尝试将我的代码移植到其中一种新方法。它们都不起作用。以下是我尝试的三种不同方法:
<UnicastBusConfig>
<MessageEndpointMappings>
<add Assembly="Foo.Interfaces" Endpoint="Foo.Bar.Monitor" />
</MessageEndpointMappings>
</UnicastBusConfig>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Assembly="Foo.Interfaces" Namespace="Foo.Bar" Endpoint="Foo.Bar.Monitor" />
</MessageEndpointMappings>
</UnicastBusConfig>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Assembly="Foo.Interfaces" Type="Foo.Bar.Baz1" Endpoint="Foo.Bar.Monitor" />
<add Assembly="Foo.Interfaces" Type="Foo.Bar.Baz2" Endpoint="Foo.Bar.Monitor" />
<add Assembly="Foo.Interfaces" Type="Foo.Bar.Baz3" Endpoint="Foo.Bar.Monitor" />
</MessageEndpointMappings>
</UnicastBusConfig>
使用这些方法中的任何一种,当我尝试发送 a 时,Baz1
我都会得到一个InvalidOperationException: No destination specified for message(s): Foo.Bar.Baz1
.
值得注意的是,如果我故意在我的类型名称中输入错字(例如Foo.Bar.Bazzzzz1
),NSB 在启动过程中找不到指定的类型时会正确出错,这表明没有错字的那些肯定发生了一些事情。
我可以通过直接将我的端点指定为 的参数来解决此问题Send
,但NSB 建议不要这样做。
所以我的问题是:我的配置是否仍然有问题,或者这真的是 NSB 3.3.8 中的错误?