0

我如何从 Azure 服务总线队列中获取未处理的消息计数,并根据计数自动缩放部署在 Azure Kubernetes 服务上的节点?

我能够获得使用 Azure Monitor 来获取队列中的消息计数并使用 HPA 配置向上/向下扩展的链接之一。

https://ferhatvurucu.medium.com/queue-based-scaling-on-azure-kubernetes-service-aks-with-helm-e1d579cd77c3

有没有其他方法可以使用 Java 代码或不使用监视器来获取 Azure 服务总线队列中的消息计数?如果有人可以提供链接以了解更多信息,请不胜感激。

4

1 回答 1

1

理想情况下,如果您使用AKS 监控Prometheus来检查队列大小并使用 HPA 缩放 POD 数量,则监控是最佳选择。

这是使用 RabbitMQ 队列并使用Prometheus自定义指标的相同场景的一个很好的示例。https://ryanbaker.io/2019-10-07-scaling-rabbitmq-on-k8s/

但是,如果您正在寻找使用 Java 或任何其他代码的自定义解决方案,您可以实现它。

这是GetMessage 计数器https ://docs.microsoft.com/en-us/azure/service-bus-messaging/message-counters

返回的 MessageCountDetails 对象具有以下属性:ActiveMessageCountDeadLetterMessageCountScheduledMessageCountTransferDeadLetterMessageCountTransferMessageCount

一些 java 示例:https ://docs.microsoft.com/en-us/samples/azure/azure-sdk-for-java/servicebus-samples/

这只会为您提供进一步扩展副本的消息计数,您可能必须使用K8s客户端库来扩展/缩减部署副本。

于 2021-08-14T18:02:08.630 回答