从NServiceBus发送多条消息

时间:2012-08-23 22:29:17

标签: nservicebus

简介
我最近使用NServiceBus设计器工具在同一解决方案中创建了一些应用程序。这一切都很有效,因为它允许我将所有内容保持在一个标准。我注意到的是,该工具似乎希望将所有消息,命令和事件保存在我自己的程序集中,而不是我创建的服务。

考虑以下设置:
解决方案名称:TestCompany
创建的服务:TestCompany.Sales,TestCompany.Finance,TestCompany.Monitoring

上面将创建一个TestCompany.InternalMessages程序集,监视服务本质上是一个中心点,可以记录可能发生的任何错误。我希望其他服务可以直接发送消息。

问题
在这种情况下,我担心的是,我希望销售服务向财务服务发送消息,以及在发生监控时发生错误。在单播总线设置中,您输入程序集及其目的地,但是我基本上想要为程序集中的不同消息输入不同的目标。我知道我可以很好地创建自己的组件并将消​​息移动到它,但它似乎违背设计师试图推动我的方向。有什么建议?

更新

我认为我必须处理的问题与建模模板的安装方式有些关系。我注意到它们不适合我,因为我无法向终点设计器添加组件,也无法在没有接收空引用异常的情况下右键单击。删除并重新安装似乎无法解决问题。

2 个答案:

答案 0 :(得分:1)

我们在建模工具中采用这种方法的原因是Visual Studio的性能随着项目数量的增加而降低。这是目前计划中最少的弊端。

您应该注意的一件事是内置审计功能,因为它们会将流经系统的所有消息转发到中央队列 - 您可以在其后放置监控服务。

答案 1 :(得分:0)

您可以为装配中的每条消息输入目的地。我不知道如何通过NServiceBus设计器工具完成这项工作,但在您的配置中,这看起来像:

<UnicastBusConfig>
    <MessageEndpointMappings>
        <add Messages="TestCompany.SalesMessages.NewSaleCreatedMessage" Endpoint="FinanceService" />
        <add Messages="TestCompany.SalesMessages.ErrorMessage" Endpoint="MonitoringService" />
    </MessageEndpointMappings>
</UnicastBusConfig>

最佳做法是为每个服务创建一个Message Assembly。 (我不知道设计师如何处理这个问题)