diff options
Diffstat (limited to 'rmq/consumer.py')
| -rw-r--r-- | rmq/consumer.py | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/rmq/consumer.py b/rmq/consumer.py new file mode 100644 index 0000000..8e1ce2b --- /dev/null +++ b/rmq/consumer.py @@ -0,0 +1,35 @@ +import time +import traceback +import pika +from pika.exceptions import ConnectionClosed + +def consume(username='guest', password='guest', host='localhost', port=5672, queue='', callback=None): +    while True: +        credentials = pika.PlainCredentials(username, password) +        con_params = pika.ConnectionParameters(host, port, '/', credentials) + +        try: +            connection = pika.BlockingConnection(con_params) + +            try: +                channel = connection.channel() +                channel.queue_declare(queue=queue, durable=False) +                channel.basic_qos(prefetch_count=1) +                channel.basic_consume(callback, queue=queue) + +                print(f"""Connected to host: {host} port: {port} queue: {queue}""", flush=True) + +                channel.start_consuming() + +            except: +                exc = traceback.format_exc() +                print(exc, flush=True) + +            finally: +                connection.close() + +        except ConnectionClosed: +            print(f"Connection lost, reconnecting to {host}", flush=True) +            pass + +        time.sleep(2) | 
