获取RabbitMQ队列中的消息数

发布于 2021-01-29 18:07:39

我们正在使用amqplib来发布/使用消息。我希望能够读取队列中的消息数(理想情况下是已确认和未确认)。这将使我能够向管理员用户显示良好的状态图,并检测某个组件是否无法满足负载需求。

我在amqplib文档中找不到有关读取队列状态的任何信息。

有人可以指出我正确的方向吗?

关注者
0
被浏览
273
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用皮卡:

    import pika
    
    pika_conn_params = pika.ConnectionParameters(
        host='localhost', port=5672,
        credentials=pika.credentials.PlainCredentials('guest', 'guest'),
    )
    connection = pika.BlockingConnection(pika_conn_params)
    channel = connection.channel()
    queue = channel.queue_declare(
        queue="your_queue", durable=True,
        exclusive=False, auto_delete=False
    )
    
    print(queue.method.message_count)
    

    使用PyRabbit:

    from pyrabbit.api import Client
    cl = Client('localhost:55672', 'guest', 'guest')
    cl.get_messages('example_vhost', 'example_queue')[0]['message_count']
    

    使用HTTP

    句法:

    curl -i -u user:password http://localhost:15672/api/queues/vhost/queue
    

    例:

    curl -i -u guest:guest http://localhost:15672/api/queues/%2f/celery
    

    注意:默认虚拟主机是/需要转义为%2f

    使用CLI:

    $ sudo rabbitmqctl list_queues | grep 'my_queue'
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看