2

在 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 中的错误?

4

0 回答 0