我很困惑UnicastBusConfig,MsmqTransportConfig, 和MSMQ队列之间的关系。的文档状态:NServiceBus - 两个发布者,一个订阅者,相同的消息接口
“在用户的总线订阅发布者的方法是 将消息发送到已在其 部被配置的队列”
我是在认为每个校正订户必须包含 MessageEndpointMapping,才能返回到 可能发布订阅服务器处理的消息的每个发布服务器的端点(或队列)?
如果是这种情况,那么如何为同一消息类型配置多个 MessageEndpointMapping?你不能有重复的值。
例如,给定MyAssembly.IDoStuff,假设我有两个出版社出版这 IDoStuff和一个订阅者:
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="MyAssembly" Endpoint="Publisher1" />
<add Messages="MyAssembly" Endpoint="Publisher2" /> <-- runtime exception
</MessageEndpointMappings>
</UnicastBusConfig>
的商业案例,这是简单的。说订阅者是一个FTP过程,它将文件和FTP发送出去。很明显,你想要从整个企业的许多地方使用该功能。因此,有一个处理ISendFile的FTP订阅服务器,然后让每个需要FTP功能的发布服务器进程发布ISendFile消息是很有意义的。这是我遇到的确切情况 - 我没有看到解决方法。
请指教 - 谢谢!
bus.Send完成工作,但感觉不对。它解决了多个发布者针对一个订阅者的问题,但是当您需要多个订阅者时会发生什么?然后你必须恢复到巴士。发布并使用经销商。我想,这很有道理。但发送与发布构造感觉太复杂了。 –
znelson
2012-08-06 21:54:20
我相信你在考虑你有多个物理发布者的场景,以获得相同的逻辑消息。想想旧的+新的CRM系统发布相同的CustomerStatusUpdated事件。这是受支持的,只是共享端点之间的订阅存储,并让您将订阅者分配给其中一个(可能是新的CRM) – 2012-08-07 19:58:21