我知道这是可能的,以分配优先级的消息,但这不是我正在寻找的,我需要分配优先级的订户。
例如,2个服务(A和B)在同一队列上订阅,但我希望有1个订阅者(A)具有更高的优先级。这意味着当两个服务都可用时,服务A将处理进入队列的所有消息,只有当服务A忙碌时,服务B才处理新消息。
使用.NET和Azure服务总线可以吗?
更多详情:
处理每条消息都需要很长的时间(30-60秒),因此,只要服务正在处理单个消息,并且每个服务都只有一个处理器,就认为该服务忙碌。
当消息流非常低(每分钟少于1条消息)时,一个订户(A)就足够了,但是当消息流增加时,将启动更多的服务(B、C等)来满足需求。
我想总是优先考虑服务A,所以它是100%忙碌,然后使用服务B,如果1是不够的,然后使用C,如果2是不够的,等等。
随着需求的降低,我希望以相反的顺序停止服务(先C,然后B)。为此,需要订阅者优先级,以便C在2个服务足以满足当前负载时停止接收消息。
编辑
感谢当前的答案,我了解了更多关于Azure Autoscale和终止通知的用法:https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-terminate-notification
这一切都很棒,有趣和值得考虑,但我仍然想知道我最初问题的答案:
订阅Azure服务总线队列时,是否可以为订阅者分配优先级?
1条答案
按热度按时间zengzsys1#
您没有指定术语“服务”的含义,但要从队列中实现多个消费应用的可扩展且经济实惠的实现,一种方法是将它们托管在应用服务计划上的功能应用中,并基于队列长度向计划添加横向扩展规则。此处描述https://learn.microsoft.com/en-us/azure/azure-monitor/autoscale/autoscale-get-started