如何从Azure服务总线队列中获得未处理的消息数,并根据该计数自动扩展部署在Azure Kubernetes服务上的节点?
我能够得到一个链接,它使用Azure Monitor来获取队列中的消息计数,并使用HPA配置向上/向下缩放。
https://ferhatvurucu.medium.com/queue-based-scaling-on-azure-kubernetes-service-aks-with-helm-e1d579cd77c3
是否有其他方法可以使用Java代码或不使用监视器来获取Azure服务总线队列中的消息计数?如果有人能提供链接来阅读更多关于这一点,我将不胜感激。
理想情况下,如果您正在使用AKS监视,则监视是这里的最佳选择。普罗米修斯或用于检查队列大小和使用HPA扩展pod的数量。
下面是一个很好的例子,使用RabbitMQ队列和自定义指标的Prometheus
。https://ryanbaker.io/2019-10-07-scaling-rabbitmq-on-k8s/
但是,如果你正在寻找使用Java或任何其他代码的自定义解决方案,你可以实现它。
这里是GetMessage计数器: https://learn.microsoft.com/en-us/azure/service-bus-messaging/message-counters
返回的MessageCountDetails对象具有以下属性:ActiveMessageCount
,DeadLetterMessageCount
,ScheduledMessageCount
,TransferDeadLetterMessageCount
,TransferMessageCount
。
一些java示例:https://learn.microsoft.com/en-us/samples/azure/azure-sdk-for-java/servicebus-samples/
这只会给你进一步扩展副本的消息计数,你可能不得不使用K8s
客户端库来扩展/缩小部署的副本。