12

我正在尝试通过将消息从不同的命名空间发送到不同的端点来在我的 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>

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

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 但在第二个配置行上失败了。我想也许它不喜欢让它们都去同一个端点,但是改变这个配置让它们去不同的端点并没有改变我收到的错误消息。

我究竟做错了什么?是否不可能按名称空间(我所看到的只是按类型和程序集)对消息进行分段?

谢谢,史蒂夫

4

3 回答 3

13

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

于 2010-04-02T08:20:56.963 回答
5

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

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

于 2010-05-19T19:02:25.557 回答
0

从 NServiceBus v3.3 起,命名空间可用于过滤消息映射

http://docs.particular.net/nservicebus/messaging/message-owner

于 2014-08-14T17:36:27.303 回答