我在App.config中看到了MessageEndpointMappings部分,这让我感到困惑。
有时它看起来像订阅另一个队列的客户端集(就像这个一样):
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="MyServiceBus.MessageHub.Contracts" Endpoint="MessageHub"/>
</MessageEndpointMappings>
</UnicastBusConfig>
但有时它似乎用于配置到其他队列的传出消息:
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="ServiceBus.MessageHub.InternalMessages" Endpoint="MessageHub"/>
</MessageEndpointMappings>
</UnicastBusConfig>
但实际上,两者之间没有区别。 那么它如何知道何时设置订阅以及何时设置发送消息?
或者它是否一直都在做,我只是不同时使用它们?
答案 0 :(得分:19)
基本上,您使用MessageEndpointMappings
元素声明的内容是&#34;谁是指定邮件的所有者?&#34;
查看它的另一种方法是,这是服务依赖的方向 - 而不是消息流,因为这取决于消息是Send
t还是{{1 }} d。
因此,为了能够发送消息并订阅来自给定服务的消息,您需要在发送方/订户端声明端点映射。
然后,当发送者/订阅者具有指向另一个服务的端点映射和该端点映射中包含的消息的处理程序时,NServiceBus足以自动订阅该消息(除非您使用Publish
禁用自动订阅) - 因为从逻辑上讲,这必须意味着发件人/订阅者希望订阅给定的消息。
当你以这种方式思考时,我认为这是有道理的。希望你也这么认为:)