NServiceBus队列概念

时间:2011-03-01 20:32:50

标签: nservicebus

刚开始学习NServiceBus并尝试理解这个概念。 当谈到队列时,我们是否在谈论发布者和订阅者的MSMQ? 因此,如果我有一个生成某个事物列表的应用程序(比如动物名称),那么它会将列表转储到发布者的队列中。发布者每分钟轮询一次队列,如果队列中有某些内容,它将发布到订阅者的队列以进行进一步处理。这有意义吗?

感谢。

3 个答案:

答案 0 :(得分:5)

发布的事件序列如下:

  • 发布者将启动(Windows服务)
  • 订阅者将启动并将消息发送到发布者的输入队列(MSMQ)
  • 发布者将接收该消息,读取订阅者的地址并将其放入存储(订阅存储:内存,MSMQ或RDBMS)
  • 当发布和发布时,发布者将检查消息类型,然后阅读订阅存储以查找对该消息感兴趣的订阅者
  • 然后,发布者将向订阅存储中找到的每个订阅者发送消息
  • 订阅者在其输入队列(MSMQ)中接收消息并对其进行处理

您可以利用其他消息传递平台而不是MSMQ,但MSMQ是默认值。实际上没有完成轮询,当消息到达队列时,所有端点都会发出信号。

答案 1 :(得分:0)

MSMQ是传输层。它会传递信息。

应用程序将使用NServiceBus队列发布某些内容。如果您将其配置为使用MSMQ,那么它将用于其传输层,这就是订阅者将要查看的内容。

答案 2 :(得分:0)

NServiceBus遵循您正确说明的发布者/订阅者模型。但是,您的困惑是基于使用两个队列。这是不正确的。服务器(发布者)将维护通过MSMQ协议连接的队列,因此您的应用程序可以直接或远程地与本地进行通信。

您通常会使用WCF服务,该服务会在新消息被推送到队列时引发事件。然后,您的应用程序可以根据需要使用此新消息。有关示例,请参阅NServiceBus文档:http://www.nservicebus.com/ArchitecturalPrinciples.aspx