今天我一直在和NServiceBus一起解决同样非常简单的问题。问题是有很多关于如何更改配置的文档,但几乎没有什么可以帮助我知道我需要什么配置。
有一些示例应用程序,它们可以正常运行,但没有解释它们如何工作,它们有什么限制,或者如何做一些与示例略有不同的事情。示例应用程序还提供了一个" Hello world"类型简单,在任何实际应用程序中,您需要与示例应用程序不同的东西,但同样没有帮助如何进行这些更改,或配置选择的含义。
从文档中很难猜到的所有事情,它是端点名称,UnicastBusConfig映射和发布/暂停持久性之间的关系,它现在造成了最大的挫折。
端点名称是MSMQ队列的名称吗?这是否意味着每个应用程序只有一个输入队列用于所有消息类型?在UnicastBusConfig中添加映射会导致将订阅消息发送给发布者,还是会在订阅DB中添加订阅记录?为什么不能多次向UnicastBusConfig添加相同的消息类型?为什么我不能订阅某种类型的消息而不必知道它们来自哪个服务器?
对于了解NServiceBus的人来说,这可能看起来很简单,以至于不值得记录,但对于第一次来这里的人来说,这是非常简单的东西,这是最常见的。很难从低级细节的泥潭中推断出来。
答案 0 :(得分:4)
端点名称是MSMQ队列的名称吗?
是
这是否意味着每个应用程序只有一个输入队列用于所有消息类型?
是。每个端点都有一个与之关联的队列,因此该端点的所有消息都通过相同的队列。
在UnicastBusConfig中添加映射会导致订阅消息发送给发布者,还是会在订阅数据库中添加订阅记录?
两者都不是。 UnicastBusConfig部分用于设置类型(或程序集)与端点之间的关系。因此,它实际上并不会导致订阅(本身),但它会告诉框架消息来自何处(因此如何订阅它们)。 / p>
系统启动时会创建实际订阅,NSB会找到与UnicastBusConfig中某个部分匹配的特定类型邮件的处理程序(假设已启用自动订阅)。
这也适用于发送命令 - 配置部分让框架知道发送()命令的端点。
为什么不能多次向UnicastBusConfig添加相同的消息类型?
因为Command只能有一个(逻辑)端点来处理它,而一个Event只能有一个(逻辑)端点来发布它。
为什么我不能订阅某种类型的消息而不必知道它们来自哪个服务器?
这个问题肯定有点难以回答,因为它涉及到拥有中央经纪人(中心和轮辐)与公交式建筑的理念。
但简而言之,某些地方需要知道如何找到出版商才能订阅它。因为NServiceBus没有中央代理或路由表,所以客户端需要知道它消耗的端点。
答案 1 :(得分:0)
您可能希望查看http://docs.particular.net/nservicebus/处的NServiceBus文档,它非常全面,并且应该为您的大多数问题提供答案。