如何在NServiceBus中按名称空间配置MessageEndpointMapping

Ste*_*ing 12 messaging msmq nservicebus

我试图通过从不同的命名空间向不同的端点发送消息来配置我的NServiceBus配置中的消息端点映射.

因此,我在web.config中配置了以下内容:

<MessageEndpointMappings>
    <add Messages="Company.Messages.Accounts" Endpoint="ServiceInput" />
    <add Messages="Company.Messages.Payments" Endpoint="ServiceInput" />
    <add Messages="Company.Messages.Cancellations" Endpoint="ServiceInput" />
    <add Messages="Company.Messages.Notifications" Endpoint="ServiceInput" />
</MessageEndpointMappings>
Run Code Online (Sandbox Code Playgroud)

但是,当我的应用程序启动时,我收到以下异常:

Spring.Objects.PropertyAccessExceptionsException:PropertyAccessExceptionsException(1个错误); 嵌套的PropertyAccessExceptions是:[Spring.Core.TypeMismatchException:无法将类型[System.Collections.Hashtable]的属性值转换为属性'MessageOwners'所需的类型[System.Collections.IDictionary].,内部异常:System.ArgumentException:问题加载消息程序集:Company.Messages.Payments ---> System.IO.FileNotFoundException:无法加载文件或程序集"Company.Messages.Payments"或其依赖项之一.该系统找不到指定的文件.文件名称:'Company.Messages.Payments'

我觉得有趣的是它似乎找到了Company.Messages.Accounts但在第二个配置的行上失败了.我想也许它不喜欢让它们全部转到同一个端点,但更改此配置以使它们进入不同的端点并没有改变我收到的错误消息.

我究竟做错了什么?是不是可以通过命名空间来分割消息(我所见过的只是按类型和汇编)?

谢谢,史蒂夫

And*_*und 13

NSB仅支持将程序集或单个类型映射到端点.不支持命名空间,我建议您将消息程序集拆分为每个端点的单独程序集.

  • 3.3.0还添加了对名称空间的支持 (3认同)
  • 安德烈亚斯.你应该更新这个答案以反映新的API.也许是doco的链接 (2认同)

小智 5

根据此页面,您可以指定类型:http: //docs.particular.net/nservicebus/messaging/message-owner

可以使用其限定名称来配置特定类型:"namespace.type,assembly".