Rabbitmq-队列状态显示为“正在运行”,GUI显示为空闲状态

2024-04-20 08:47:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩rabbitmq HTTP API时遇到了一个奇怪的场景。当我通过web界面查看队列时,它们的状态都显示为空闲。queue status IDLE

但是,当我使用HTTP API时,两个队列的返回都显示为“running”。im使用的代码如下:

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

有人能给我解释一下这种行为吗?


Tags: importapiwebjsonhttpget队列场景
1条回答
网友
1楼 · 发布于 2024-04-20 08:47:07

在这里检查管理控制台源代码: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”。

如果您的队列中有“流量”,那么您将有一个类似的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状态。

总之,它只是一个web视图格式。

相关问题 更多 >