【问题标题】:How do I correctly set up a publisher-subscriber architecture using MassTransit with MSMQ?如何使用 MassTransit 和 MSMQ 正确设置发布者-订阅者体系结构?
【发布时间】:2013-06-19 15:27:54
【问题描述】:

如何使用 MassTransit 和 MSMQ 正确设置具有多个订阅者(都接收已发布消息)的发布者-订阅者架构。

请注意,我不想使用 MSMQ 多播功能,因为它有点不稳定并且依赖于 PGM(它自身有一些限制)。

我已阅读 thisthisthis,但仍然无法弄清楚我应该如何设置

  1. 订阅服务,
  2. 出版商,
  3. 和几个订阅者。

特别是在许多示例中使用的sbc.UseSubscriptionService("uri"); 现在已过时(我使用的是 MassTransit 2.7)。过时的评论说The extension method on UseMsmq should be used instaed,但我找不到这样的方法。
我们应该如何设置订阅服务?

MassTransit Github 页面上的 Distributor 示例与我想要的最接近,但它设置了消费订阅者。

请指点我或提供一个示例,说明如何在可能有多个订阅者的情况下设置发布者-订阅者架构。

感谢您的宝贵时间。

【问题讨论】:

    标签: msmq publish-subscribe masstransit


    【解决方案1】:

    要使用 UseSubscriptionService 扩展方法,您需要导入 MSMQ 配置命名空间。

    Imports MassTransit.Transports.Msmq.Configuration
    

    你现在可以写这个(VB.Net)

    sbc.UseMsmq(Sub(c)
        c.UseSubscriptionService(ConfigurationManager.AppSettings("MassTransit_SubscriptionService"))
    End Sub)
    

    这是为了配置服务,但为了使一切正常工作(使用 MSMQ),您需要运行 MassTransit 运行时服务(GitHub MassTransit Runtime Services 提供的最新版本;您需要这个而不是可用的来自 MassTransit 网站上的二进制文件,这些文件已过时)。

    下载源代码后,应首先运行 SetupSQLServer.sql。 接下来是调整配置文件以指向您的数据库并使用正确的凭据。 您现在应该运行该程序(在开发期间作为控制台,但最好在非开发环境中作为 Windows 服务安装)。确保控制台在启动您的发布者/订阅者之前,因为他们依赖于这个“服务”。

    我刚刚实现了一个功能齐全的设置,并体验了我的幸福时刻。我打算对我的所有步骤进行完整的记录,但我希望这已经有所帮助。

    This article explains the setup of the Runtimeservice in a little more detail.

    【讨论】:

      【解决方案2】:

      我认为“设置消费订阅者”是对您的困难来源的放弃 - 所有订阅者都是“消费订阅者”。

      考虑 MassTransit 的最佳方式是扇出:MassTransit 维护通往所有对某种类型的消息感兴趣的消费者的路线。您在一个或多个端点设置一个或多个消费者,MassTransit 确保消息的副本到达每个消费者。

      Distributor 实际上是一种特殊情况,除非您对负载平衡感兴趣,否则这不是故意的,也不应该是您应该关注的。 以下是相关文档链接:http://docs.masstransit-project.com/en/master/overview/publishing.html#plain-msmq

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-25
        相关资源
        最近更新 更多