Azure 服务总线 - 多个订阅者未收到所有消息

Azh*_*ari 3 azure azureservicebus

我正在使用代码来实现 Azure 服务总线主题,可以在此处找到这些主题: https: //learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-how-to-使用主题订阅

我尝试运行订阅者程序的两个实例,其中包含以下方法:

private static void RegisterOnMessageHandlerAndReceiveMessages()
{
    var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler)
    {
        MaxConcurrentCalls = 1,
        AutoComplete = false
    };
    _subscriptionClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);
}

private static async Task ProcessMessagesAsync(Message message, CancellationToken token)
{
    Console.WriteLine($"Received #{message.SystemProperties.SequenceNumber} message: {Encoding.UTF8.GetString(message.Body)}");
    await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,这不允许两个订阅者都收到该消息,而是会在两个订阅者之间分别收到一条消息。

如何确保两个订阅者都能收到来自总线的所有消息?

Sea*_*man 7

在检索消息时, Azure 服务总线是具有竞争消费者模式的代理。这是预期的行为。这里有一个横向扩展的处理端点,两者都尝试处理来自同一订阅的消息。消息在这两个竞争的消费者之间分发。如果您需要将相同的消息分发给多个订阅者,则应该创建并侦听不同的订阅实体。