在使用 的过程中,发现只能获取 ready 状态的消息数量,只好用 http 请求来实现目的。
#encoding: utf-8#author: walker#date: 2018-03-06#summary: 获取 RabbitMQ 中3种状态消息的数量import os, sys, timeimport requestsimport jsonclass RabbitMQTool(object): def __init__(self, host, vhost, queue, user, passwd): self.host = host self.vhost = vhost self.queue = queue self.user = user self.passwd = passwd # 返回3种消息数量:ready, unacked, total def getMessageCount(self): url = 'http://%s:15672/api/queues/%s/%s' % (self.host, self.vhost, self.queue) r = requests.get(url, auth=(self.user, self.passwd)) print(r) if r.status_code != 200: return -1 dic = json.loads(r.text) return dic['messages_ready'], dic['messages_unacknowledged'], dic['messages']if __name__ == '__main__': mqTool = RabbitMQTool(host = '192.168.0.xx', vhost = 'vhost_walker', queue = 'queue_walker', user = 'walker', passwd = 'walker') ready, unacked, total = mqTool.getMessageCount() print('ready: %d' % ready) print('unacked: %d' % unacked) print('total: %d' % total)
*** ***