如何使用 KEDA 查看来自 RabbitMQ 的未确认消息?

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

我创建了一个 ScaledObject,它根据 RabbitMQ 队列中存在的请求数量来扩展 Celery 工作单元。这是在 Azure Kubernetes 服务集群中。

我使用了以下 URL,并注意到未确认的消息不包含在决定扩展 Celery Pod 的标准中。它确实适用于“就绪”消息,但这些消息消失得相当快,从而留下了 pod 是否应该扩大规模的错误指示。

amqp://用户:[电子邮件受保护]:5672

在这个KEDA教程中说:

excludeUnacknowledged - 设置为 true 以指定 QueueLength 值应排除未确认的消息(仅限就绪消息)。 (值:true、false,默认值:false、可选,仅适用于使用 http 协议的主机

在这个 Github 线程中也明确指出,只有 HTTP 协议包含有关 RabbitMQ 的未确认消息的信息:

amqp 协议仅公开未确认的消息,要包含那些您必须使用与管理 API 对话的 http 模式。

所以,我通过将网址更改为:

来完成此操作

http://用户:[电子邮件受保护]:15672

当我这样做时,我的 ScaledObject 上出现以下错误:

Warning  KEDAScalerFailed    3m27s (x201 over 13m)  keda-operator  
error inspecting rabbitMQ: 
error requesting rabbitMQ API status: 404 Not Found, 
response: {"error":"Object Not Found","reason":"Not Found"}, 
from: http://user:[email protected]:15672/api/queues/%!F(MISSING)/celery

我认为这个问题是,当我集成 RabbitMQ 时,我将管理 url 的基本路径更改为

/management
。这样我就可以通过:
FQDN/management/#/
而不是通过:
FQDN/#/
访问管理仪表板。当我尝试将
/management
添加到网址后面时,它被视为 vhost 并粘贴在
/api/queues/
部分后面,如下所示:

http://用户:[电子邮件受保护]:15672/api/queues/management/celery

还有另一种方法可以检索未确认消息的数据吗?或者有没有办法让

/management/
位于网址内的正确位置?

科达版本:2.9.0, Kubernetes 版本:1.24.10

kubernetes rabbitmq azure-aks amqp keda
1个回答
0
投票

您可以在uri中使用%2g

像这样

http://用户:[电子邮件受保护]:15672/api/queues/%2f/management/celery

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