如何使用带有MSMQ的MassTransit正确设置发布者 - 订阅者体系结构?

时间:2013-06-19 15:27:55

标签: msmq publish-subscribe masstransit

如何使用MassTransit和MSMQ正确设置具有多个订阅者(均收到已发布消息)的发布者 - 订阅者体系结构。

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

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

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

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

    请指出或提供如何设置可能有多个订阅者的发布者 - 订阅者体系结构的示例。

    感谢您的时间。

2 个答案:

答案 0 :(得分:2)

要使用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.

答案 1 :(得分:0)

我认为“设置消费用户”是对你的难度来源的贬低 - 所有用户都是“消费用户”。

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

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