Get Queue Size in Pika (AMQP Python)

后端 未结 4 1566
無奈伤痛
無奈伤痛 2020-12-09 02:00

Simple question, but Google or the Pika open source code did not help. Is there a way to query the current queue size (item counter) in Pika?

4条回答
  •  醉话见心
    2020-12-09 02:45

    I know that this question is a bit old, but here is an example of doing this with pika.

    Regarding AMQP and RabbitMQ, if you have already declared the queue, you can re-declare the queue with the passive flag on and keeping all other queue parameters identical. The response to this declaration declare-ok will include the number of messages in the queue.

    Here is an example With pika 0.9.5:

    import pika
    
    def on_callback(msg):
        print msg
    
    params = pika.ConnectionParameters(
            host='localhost',
            port=5672,
            credentials=pika.credentials.PlainCredentials('guest', 'guest'),
        )
    
    # Open a connection to RabbitMQ on localhost using all default parameters
    connection = pika.BlockingConnection(parameters=params)
    
    # Open the channel
    channel = connection.channel()
    
    # Declare the queue
    channel.queue_declare(
            callback=on_callback,
            queue="test",
            durable=True,
            exclusive=False,
            auto_delete=False
        )
    
    # ...
    
    # Re-declare the queue with passive flag
    res = channel.queue_declare(
            callback=on_callback,
            queue="test",
            durable=True,
            exclusive=False,
            auto_delete=False,
            passive=True
        )
    print 'Messages in queue %d' % res.method.message_count
    

    This will print the following:

    "])>
    "])>
    Messages in queue 0
    

    You get the number of messages from the message_count member.

提交回复
热议问题