MessageEndpointMappings如何知道设置订阅与传出消息?

Vac*_*ano 8 nservicebus

我在App.config中看到了MessageEndpointMappings部分,它让我感到困惑.

有时它看起来像是一个客户端来订阅另一个队列(就像这个一样):

<UnicastBusConfig>
 <MessageEndpointMappings>      
   <add Messages="MyServiceBus.MessageHub.Contracts" Endpoint="MessageHub"/>
 </MessageEndpointMappings>
</UnicastBusConfig>
Run Code Online (Sandbox Code Playgroud)

但有时它似乎用于配置到其他队列的传出消息:

<UnicastBusConfig>
 <MessageEndpointMappings>      
   <add Messages="ServiceBus.MessageHub.InternalMessages" Endpoint="MessageHub"/>
 </MessageEndpointMappings>
</UnicastBusConfig>
Run Code Online (Sandbox Code Playgroud)

但实际上,两者之间没有区别. 那么它如何知道何时设置订阅以及何时设置发送消息?

或者它是否真的一直在做,我只是不使用两者?

moo*_*000 19

基本上,你用MessageEndpointMappings元素声明的是"谁是指定消息的所有者?"

查看它的另一种方法是,这是服务依赖的方向- 而不是消息流,因为这取决于消息是否为Sendt或Publishd.

因此,为了能够从给定服务发送消息和订阅消息,您在发送方/订户端声明端点映射.

然后,当发送者/订阅者具有指向另一个服务的端点映射和该端点映射中包含的消息的处理程序时,NServiceBus足以自动订阅该消息(除非您禁用自动订阅DoNotAutoSubscribe()) -因为,从逻辑上讲,这必须意味着发件人/订阅者希望订阅给定的消息.

当你以这种方式思考时,我认为这是有道理的.希望你也这么感受:)