1

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

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

我已经阅读了这个这个这个,但仍然无法弄清楚我应该如何设置

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

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

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

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

谢谢你的时间。

4

2 回答 2

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 运行时服务获得最新版本;您需要这个而不是从MassTransit 网站上的二进制文件,这些文件已过时)。

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

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

本文更详细地解释了 Runtimeservice 的设置。

于 2013-07-28T22:48:14.243 回答
0

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

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

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

于 2013-06-20T13:31:03.950 回答