Azure 服务总线消费者重新平衡类似于 Kafka 消费者组重新平衡

问题描述 投票:0回答:1

我以前有使用 Kafka 的经验,但对 Azure 服务总线相对较新。考虑到 Kafka 分区和 Azure 服务总线会话之间的相似性,我想知道在服务总线使用者扩展到多个实例的情况下是否有可能以 Kafka 的方式自动进行类似的重新平衡。使用 Kafka,当我们的消费者水平扩展和缩小的情况下,我们不需要担心消费者和分区之间的最佳重新平衡。

到目前为止,我还没有找到Azure Service Bus的类似功能。假设服务总线订阅有 3 个会话,并且有 1 个使用者。该单个消费者锁定所有 3 个会话,并且在某个时刻消费者从 1 个实例扩展到 3 个。根据我(目前有限)对 Azure 服务总线的理解,第一个实例将继续持有所有 3 个会话的锁定,并且其他 2 个消费者实例将处于空闲状态,直到消息停止到达这些会话并且第一个实例释放锁。只有这样,其他 2 个消费者实例才有可能锁定这些会话。

这似乎不切实际,因为我们通常会在高负载时刻进行扩展,此时消息大量到达该主题。由于消息主动到达该主题,第一个消费者实例不会释放这些锁?那么消费者容器的水平缩放就没有任何好处。

请帮忙,或者如果我误解了什么请告诉我。

azure apache-kafka azureservicebus messaging servicebus
1个回答
0
投票

客户端一次只能处理服务总线中的一个会话。一旦会话空了,您就切换到下一个会话。这样,当更多的客户端被初始化时,它们将请求下一个可用会话并开始处理其相应的会话。有关更多详细信息,我建议阅读https://learn.microsoft.com/en-us/azure/service-bus-messaging/message-sessions,包括链接的代码示例。

© www.soinside.com 2019 - 2024. All rights reserved.