使用 Azure 服务总线为队列订阅者分配优先级

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

我知道可以为消息分配优先级,但这不是我想要的,我需要为订阅者分配优先级。

例如,在同一个队列上订阅了 2 个服务(A 和 B),但我希望 1 个订阅者 (A) 具有更高的优先级。这意味着当两个服务可用时,服务 A 将处理进入队列的所有消息,并且只有当服务 A 繁忙时,服务 B 才会处理新消息。

使用 .NET 和 Azure 服务总线可以实现这一点吗?

更多详情:

每条消息都需要大量时间来处理(30-60 秒),因此服务一旦处理一条消息,就会被视为繁忙,并且每个服务都有一个处理器。

当消息流量非常低(每分钟少于 1 条消息)时,一个订阅者(A)就足够了,但当流量增加时,将启动更多服务(B、C 等)来满足需求。

我希望始终优先考虑服务 A,使其 100% 繁忙,如果 1 不够,则使用服务 B,如果 2 不够,则使用服务 C,等等。

随着需求降低,我想以相反的顺序停止服务(先 C,然后 B)。为此,需要订阅者优先级,以便当 2 个服务足以满足当前负载时,C 停止接收消息。

编辑

感谢当前的答案,我找到了有关Azure Autoscale和终止通知的使用的更多信息:https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-规模集终止通知

这一切都很棒、有趣且值得考虑,但我仍然想知道我原来问题的答案:

订阅 Azure 服务总线队列时是否可以为订阅者分配优先级?

c# azure .net-6.0 message-queue azureservicebus
1个回答
0
投票

您没有指定术语“服务”的含义,但实现队列中多个消费应用程序的可扩展且经济实惠的实现的一种方法是将它们托管在应用程序服务计划上的功能应用程序中,并添加横向扩展规则根据计划的队列长度。此处对此进行了描述https://learn.microsoft.com/en-us/azure/azure-monitor/autoscale/autoscale-get-started

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