通常,我对 UnicastBusConfig、MsmqTransportConfig 和 MSMQ 队列之间的关系感到困惑。文档状态:
“订阅者的总线订阅发布者的方式是向已在其部分中配置的队列发送消息”
我是否正确地相信每个订阅者必须包含一个 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 消息是有意义的。这是我遇到的确切情况-我看不到解决方法。
请指教-谢谢!