Rabbitmq - 队列状态显示为 'running' ,GUI 显示状态为 IDLE
Rabbitmq - queues state shows as 'running' , GUI shows status as IDLE
我在玩 rabbitmq HTTP API 时遇到了一个奇怪的场景。当我通过 Web 界面查看我的队列时,它们的状态都显示为空闲。 。
然而,当我使用 HTTP API 时,两个队列的 return 显示为 'running'。我使用的代码如下:
import requests
import json
uri = 'http://localhost:15672/api/queues'
r = requests.get(uri, auth=("guest","guest"))
parsed = json.loads(r.content)
#print json.dumps(parsed, indent=4)
for i in parsed:
print '{:<20} : {}'.format(i.get('name'), i.get('state'))
输出:
test queue : running
test2 : running
谁能给我解释一下这种行为?
在此处查看 Management_console 源代码:https://github.com/rabbitmq/rabbitmq-management/blob/master/priv/www/js/formatters.js#L479
function fmt_object_state(obj) {
if (obj.state == undefined) return '';
var colour = 'green';
var text = obj.state;
var explanation;
if (obj.idle_since !== undefined) {
colour = 'grey';
explanation = 'Idle since ' + obj.idle_since;
text = 'idle';
}
如果字段 idle_since
不为空,控制台将显示 "idle"。
如果您的队列中有 "traffic",您将得到这样的 json:
"policy":"",
"exclusive_consumer_tag":"",
"consumers":0,
"consumer_utilisation":"",
"memory":176456,
"recoverable_slaves":"",
"state":"running",
如果队列处于空闲状态(没有流量),您将有一个 json 像这样:
"idle_since":"2015-06-25 10:15:07",
"consumer_utilisation":"",
"policy":"",
"exclusive_consumer_tag":"",
"consumers":0,
"recoverable_slaves":"",
"state":"running",
如您所见,字段 "idle_since"
不为空。
在这两种情况下,队列始终处于 running
状态。
总之,它只是一种网络视图格式。
我在玩 rabbitmq HTTP API 时遇到了一个奇怪的场景。当我通过 Web 界面查看我的队列时,它们的状态都显示为空闲。
然而,当我使用 HTTP API 时,两个队列的 return 显示为 'running'。我使用的代码如下:
import requests
import json
uri = 'http://localhost:15672/api/queues'
r = requests.get(uri, auth=("guest","guest"))
parsed = json.loads(r.content)
#print json.dumps(parsed, indent=4)
for i in parsed:
print '{:<20} : {}'.format(i.get('name'), i.get('state'))
输出:
test queue : running
test2 : running
谁能给我解释一下这种行为?
在此处查看 Management_console 源代码:https://github.com/rabbitmq/rabbitmq-management/blob/master/priv/www/js/formatters.js#L479
function fmt_object_state(obj) {
if (obj.state == undefined) return '';
var colour = 'green';
var text = obj.state;
var explanation;
if (obj.idle_since !== undefined) {
colour = 'grey';
explanation = 'Idle since ' + obj.idle_since;
text = 'idle';
}
如果字段 idle_since
不为空,控制台将显示 "idle"。
如果您的队列中有 "traffic",您将得到这样的 json:
"policy":"",
"exclusive_consumer_tag":"",
"consumers":0,
"consumer_utilisation":"",
"memory":176456,
"recoverable_slaves":"",
"state":"running",
如果队列处于空闲状态(没有流量),您将有一个 json 像这样:
"idle_since":"2015-06-25 10:15:07",
"consumer_utilisation":"",
"policy":"",
"exclusive_consumer_tag":"",
"consumers":0,
"recoverable_slaves":"",
"state":"running",
如您所见,字段 "idle_since"
不为空。
在这两种情况下,队列始终处于 running
状态。
总之,它只是一种网络视图格式。