Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#服务总线多个侦听器都接收相同的消息(BrokeredMessage)_C#_Azure_Brokeredmessage - Fatal编程技术网

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

C#服务总线多个侦听器都接收相同的消息(BrokeredMessage),c#,azure,brokeredmessage,C#,Azure,Brokeredmessage,我曾经使用RabbitMQ作为消息传递平台,但我从来没有遇到过任何问题-不幸的是,我们最近将基础设施移到了Azure,而他们不提供RabbitMQ服务器,因此我考虑尝试服务总线扩展 我有一个作者和多个读者。目前,读者将各自阅读不同的消息(消息竞争模式-例如,有利于负载平衡) 我想要的是,所有的读者都得到相同的信息,并自己处理 读者: 我已经找了两个小时的解决方案,但什么也找不到。在RabbitMQ中,这将是默认行为 Azure服务总线支持多种范例,其中一种称为“主题”: 与服务总线队列不同,在

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

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

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

读者:

我已经找了两个小时的解决方案,但什么也找不到。在RabbitMQ中,这将是默认行为


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

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


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

如果我为每个侦听器使用一个订阅,我的代码似乎可以工作。这是正确的吗?所以,如果我有100000个用户,我将有100000个订阅?@ Walk熊猫。你认为读者是由你决定的。如果你正在寻找一种广播方式,还有其他技术可以帮助你。其中一个是信号员。你熟悉它的工作原理吗?从理论上讲,您可以将消息从队列或主题中拉出,并使用信号器将该消息广播给所有或特定的连接用户组。如果您的用户是移动用户,那么您也可以使用Azure通知中心和自定义标记。我的设置不需要很多连接的使用者,我只是想知道是否有多个订阅是主题应该工作的方式,或者我是否做错了什么。无所谓的话题对我来说很好;)@在事件驱动体系结构中,应用程序希望以多种不同的方式处理同一事件。您如何通过主题和订阅者实现这一点?是否提前手动创建所有订阅服务器?
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);
            }
        });
Console.WriteLine("Sending message " + message);
        BrokeredMessage msg = new BrokeredMessage(message);
        this.client.Send(msg);