RabbitMQ:我如何看到队列中形成的积压?
我正在开发一个使用多个RabbitMQ队列的系统。我想知道诸如“是否有任何队列已满(处理速度不够快)”和“队列相对而言有多满?”之类的信息,一些实时条形图就足够了RabbitMQ:我如何看到队列中形成的积压?,rabbitmq,Rabbitmq,我正在开发一个使用多个RabbitMQ队列的系统。我想知道诸如“是否有任何队列已满(处理速度不够快)”和“队列相对而言有多满?”之类的信息,一些实时条形图就足够了 如何查看此信息?我正在查看JSON API,但不清楚哪些数字是相关的;例如,对于给定的队列,消息计数始终显示为0,即使消息正在通过。我们根据队列长度创建了一个splunk警报,我猜您正在尝试执行类似的操作 如果您使用的是队列JSON API(http://{host}:15672/API/queues/{vhost}/),那么可以使用
如何查看此信息?我正在查看JSON API,但不清楚哪些数字是相关的;例如,对于给定的队列,
消息
计数始终显示为0,即使消息正在通过。我们根据队列长度创建了一个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,
这些值都应该实时填充和更改。我们根据队列长度创建了一个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,
这些值都应该被实时填充和更改。@jhilden的回答让我开始;“蓝”是我想看到的。下面是一个简单的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
@吉尔登的回答让我走了;“蓝”是我想看到的。下面是一个简单的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
我想在生产者和消费者身上多加一点代码就可以做到这一点。我想在生产者和消费者身上多加一点代码就可以做到这一点。