C# Service Bus 多个监听器都收到相同的消息(BrokeredMessage)
C# Service Bus multiple listeners all receive the same message ( BrokeredMessage)
我曾经使用 RabbitMQ 作为消息传递平台,我从来没有遇到过任何问题 - 不幸的是,我们最近将我们的基础设施转移到了 Azure,他们不提供 RabbitMQ 服务器,所以我想尝试一下服务总线扩展。
我有一个作家和多个readers。目前,reader 将各自读取一条不同的消息(消息竞争模式 - 例如,有利于负载平衡)。
我想要的是,所有 reader 都收到 相同的消息 并自行处理。
reader(s):
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);
我已经找了两个小时的解决方案,但一无所获。在 RabbitMQ 中,这将是默认行为。
Azure 服务总线支持多种范式,其中一种称为 "Topics":
How to use Service Bus topics and subscriptions
与服务总线队列不同,其中每条消息都由单个消费者处理,主题和订阅使用 publish/subscribe 模式提供 "one-to-many" 通信形式。
Link 以上演示了核心主题概念和代码示例。
我曾经使用 RabbitMQ 作为消息传递平台,我从来没有遇到过任何问题 - 不幸的是,我们最近将我们的基础设施转移到了 Azure,他们不提供 RabbitMQ 服务器,所以我想尝试一下服务总线扩展。
我有一个作家和多个readers。目前,reader 将各自读取一条不同的消息(消息竞争模式 - 例如,有利于负载平衡)。
我想要的是,所有 reader 都收到 相同的消息 并自行处理。
reader(s):
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);
我已经找了两个小时的解决方案,但一无所获。在 RabbitMQ 中,这将是默认行为。
Azure 服务总线支持多种范式,其中一种称为 "Topics":
How to use Service Bus topics and subscriptions
与服务总线队列不同,其中每条消息都由单个消费者处理,主题和订阅使用 publish/subscribe 模式提供 "one-to-many" 通信形式。
Link 以上演示了核心主题概念和代码示例。