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



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

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

我已经读了这个,这个和这个,但仍然不知道我应该如何设置

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

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

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

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

感谢您的宝贵时间。

要使用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运行时服务;你需要这个,而不是在masstrtransit网站上的二进制文件,那些已经过时了)。

一旦你下载了源代码,你应该运行SetupSQLServer。sql。下一步是调整配置文件,使其指向数据库并使用正确的凭据。您现在应该运行这个程序(在开发期间作为控制台,但最好在非开发环境中作为windows服务安装)。在启动您的发布者/订阅者之前,请确保控制台是正常的,因为它们依赖于此"服务"。

我刚刚实现了一个功能齐全的设置,并体验了我的幸福时刻。我打算把我所有的步骤都写下来,但我希望这已经有所帮助了。

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

我认为"设置消费订阅者"是你的困难来源的泄露-所有订阅者都是"消费订阅者"。

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

分配器实际上是一个特殊的情况,它故意不成立,你不应该看到它,除非你对负载平衡感兴趣。以下是相关文档链接:http://docs.masstransit-project.com/en/master/overview/publishing.html#plain-msmq

最新更新