【问题标题】:NServiceBus queue conceptNServiceBus 队列概念
【发布时间】:2011-03-01 20:32:49
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: nservicebus


    【解决方案1】:

    发布的事件顺序如下:

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

    您可以利用其他消息传递平台而不是 MSMQ,但 MSMQ 是默认设置。确实没有进行轮询,当消息进入队列时,所有端点都会发出信号。

    【讨论】:

    • @Adam- 那么,订阅者会有自己的输入队列吗?或者,订阅者是否会从发布者的队列中获取消息?
    • 订阅者将拥有自己的输入队列,因此他们可以在不阻塞其他任何人的情况下处理消息,这将是独立的
    【解决方案2】:

    MSMQ 是一个传输层。它传递消息。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-04-29
        • 1970-01-01
        • 2013-02-25
        • 2014-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-19
        相关资源
        最近更新 更多