Get Queue Size in Pika (AMQP Python)
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 pikadef on_callback(msg): print msgparams = pika.ConnectionParameters( host='localhost', port=5672, credentials=pika.credentials.PlainCredentials('guest', 'guest'), )# Open a connection to RabbitMQ on localhost using all default parametersconnection = pika.BlockingConnection(parameters=params)# Open the channelchannel = connection.channel()# Declare the queuechannel.queue_declare( callback=on_callback, queue="test", durable=True, exclusive=False, auto_delete=False )# ...# Re-declare the queue with passive flagres = 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:
<Method(['frame_type=1', 'channel_number=1', "method=<Queue.DeclareOk(['queue=test', 'message_count=0', 'consumer_count=0'])>"])><Method(['frame_type=1', 'channel_number=1', "method=<Queue.DeclareOk(['queue=test', 'message_count=0', 'consumer_count=0'])>"])>Messages in queue 0
You get the number of messages from the message_count
member.
Here is how you can get queue length using pika(Considering you are using default user and password on localhost)replace q_name by your queue name.
import pikaconnection = pika.BlockingConnection()channel = connection.channel()q = channel.queue_declare(q_name)q_len = q.method.message_count