C# 服务总线多个侦听器都收到相同的消息( BrokeredMessage)

The*_*nda 5 c# azure brokeredmessage

我曾经使用 RabbitMQ 作为消息传递平台,我从来没有遇到过任何问题 - 不幸的是,我们最近将我们的基础设施转移到了 Azure 并且他们不提供 RabbitMQ 服务器,所以我想尝试使用服务总线扩展。

我有一个作家和多个读者。目前,读者将各自阅读不同的消息(消息竞争模式 - 例如有利于负载平衡)。

我想要的是,所有的读者都得到相同的信息并自己处理。

读者:

string connectionKey = "....";
        this.client = QueueClient.CreateFromConnectionString(connectionKey, "dev");
        this.client.OnMessage((message) =>
        {
            try
            {
                Console.WriteLine("Message received: " + message.GetBody<string>());
                Console.WriteLine("Message ID: " + message.MessageId);
              //  message.Complete();
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception " + e.Message);
            }
        });
Run Code Online (Sandbox Code Playgroud)

笔者:

Console.WriteLine("Sending message " + message);
        BrokeredMessage msg = new BrokeredMessage(message);
        this.client.Send(msg);
Run Code Online (Sandbox Code Playgroud)

我一直在寻找解决方案两个小时,但找不到任何东西。在 RabbitMQ 中,这将是默认行为。

图像显示了我所拥有的与我需要的模式

Adm*_*vić 6

Azure 服务总线支持多种范例,其中之一称为“主题”:

如何使用服务总线主题和订阅

与服务总线队列(其中每条消息均由单个使用者处理)相反,主题和订阅使用发布/订阅模式提供“一对多”形式的通信。

上面的链接演示了核心主题概念以及代码示例。

  • 如果我为每个监听器使用 1 个订阅,我的代码似乎可以工作。它是否正确?那么如果我有 100,000 个用户,我就会有 100,000 个订阅吗? (2认同)