我正在使用一个使用多个RabbitMQ队列的系统。我想知道像#34;任何队列都满了(没有足够快地处理)?"和#34;队列相对于彼此有多满?"一些实时条形图就足够了。
我怎样才能看到这些信息?我正在查看JSON API,但我不清楚哪些数字是相关的;例如,对于给定的队列,messages
计数一直显示0,即使消息正在流过。
答案 0 :(得分:2)
我们根据队列长度创建了一个splunk警报,我猜测你正在尝试做类似的事情。
如果您正在使用队列JSON API(http:// {host}:15672 / api / queues / {vhost} /),那么您可以使用的一些值是:
"messages": 25,
"messages_details": {
"rate": 0
},
"messages_ready": 25,
"messages_ready_details": {
"rate": 0
},
"messages_unacknowledged": 0,
"messages_unacknowledged_details": {
"rate": 0
}
另一个是:
"len": 25,
这些值应该全部填充并实时更改。
答案 1 :(得分:2)
@ jhilden的回答让我走了; " LEN"是我想看到的。这是一个简单的Ruby脚本,用于轮询和吐出队列长度:
require "json"
require "time"
user = "guest"
password = "guest"
host = "localhost"
port = "15672"
vhost = "%2f" # url encoded "/", the default vhost
interval = 2
loop do
# We could do this using native Ruby code instead
command = "curl -u #{user}:#{password} http://#{host}:#{port}/api/queues/#{vhost} 2> /dev/null"
json = %x{#{command}}
data = JSON.parse(json)
info = data.map { |q|
"#{q.fetch("name")} - #{q.fetch("backing_queue_status").fetch("len")}"
}.join("\n")
puts DateTime.now
puts info
puts "=" * 40
sleep interval
end