我正在尝试使用NServiceBus使4个应用程序一起通信。
所有这些应用程序都必须充当发布者和订阅者。
我创建的唯一方法就是创建一个名为Server的“主”队列 所有应用程序配置中的MessageEndpointMappings都映射到了哪个,但我认为这不是好方法......
那么我应该如何在所有这些应用程序上配置NServiceBus才能使其正常工作?
申请1:
<MsmqTransportConfig InputQueue="MyApp1" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
<MsmqSubscriptionStorageConfig Queue="Subscriptions" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="MyApp.Messages" Endpoint="Server" />
</MessageEndpointMappings>
</UnicastBusConfig>
申请2:
<MsmqTransportConfig InputQueue="MyApp2" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
<MsmqSubscriptionStorageConfig Queue="Subscriptions" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="MyApp.Messages" Endpoint="Server" />
</MessageEndpointMappings>
</UnicastBusConfig>
申请3:
<MsmqTransportConfig InputQueue="MyApp3" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
<MsmqSubscriptionStorageConfig Queue="Subscriptions" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="MyApp.Messages" Endpoint="Server" />
</MessageEndpointMappings>
</UnicastBusConfig>
申请表4:
<MsmqTransportConfig InputQueue="MyApp4" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
<MsmqSubscriptionStorageConfig Queue="Subscriptions" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="MyApp.Messages" Endpoint="Server" />
</MessageEndpointMappings>
</UnicastBusConfig>
答案 0 :(得分:4)
NServiceBus更喜欢您遵循仅由一个服务发布的特定消息类型的模式。通常,每个服务都有一个“消息”程序集,例如:
<MsmqTransportConfig InputQueue="MyApp1" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
<MsmqSubscriptionStorageConfig Queue="MyApp1Subscriptions" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="MyApp2.Messages" Endpoint="MyApp2" />
<add Messages="MyApp3.Messages" Endpoint="MyApp3" />
<add Messages="MyApp4.Messages" Endpoint="MyApp4" />
</MessageEndpointMappings>
</UnicastBusConfig>
如果要从所有四个应用程序发布相同的消息类型,可以将消息Bus.Send()发送到中央事件发布者服务,然后可以使用Bus.Publish()它。