Consume multiple queues in python / pika

后端 未结 2 948
青春惊慌失措
青春惊慌失措 2021-02-05 01:08

I am trying to create a consumer that would subscribe to multiple queues, and then process messages as they arrive.

The problem is that when there is some data already

2条回答
  •  南旧
    南旧 (楼主)
    2021-02-05 01:39

    One possible solution is to use non blocking connection and consume messages.

    import pika
    
    
    def callback(channel, method, properties, body):
        print(body)
        channel.basic_ack(delivery_tag=method.delivery_tag)
    
    
    def on_open(connection):
        connection.channel(on_channel_open)
    
    
    def on_channel_open(channel):
        channel.basic_consume(callback, queue='queue1')
        channel.basic_consume(callback, queue='queue2')
    
    
    parameters = pika.URLParameters('amqp://guest:guest@localhost:5672/%2F')
    connection = pika.SelectConnection(parameters=parameters,
                                       on_open_callback=on_open)
    
    try:
        connection.ioloop.start()
    except KeyboardInterrupt:
        connection.close()
    

    This will connect to multiple queues and will consume messages accordingly.

提交回复
热议问题