43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from functools import partial
|
|
import pika
|
|
from retry import retry
|
|
from mini_queue.utils.config import CONFIG
|
|
from mini_queue.producer import produce_response
|
|
|
|
|
|
def callback(ch, method, properties, body):
|
|
print("Received %r" % body)
|
|
parameters = init_params()
|
|
queue = CONFIG.rabbitmq.queues.output
|
|
produce_response(parameters, queue, body)
|
|
|
|
|
|
def init_params():
|
|
credentials = pika.PlainCredentials(CONFIG.rabbitmq.user, CONFIG.rabbitmq.password)
|
|
parameters = pika.ConnectionParameters(host=CONFIG.rabbitmq.host, port=CONFIG.rabbitmq.port, heartbeat=CONFIG.rabbitmq.heartbeat, credentials=credentials)
|
|
return parameters
|
|
|
|
|
|
@retry(pika.exceptions.AMQPConnectionError, delay=5, jitter=(1, 3))
|
|
def consume(parameters, queue):
|
|
connection = pika.BlockingConnection(parameters)
|
|
channel = connection.channel()
|
|
while True:
|
|
try:
|
|
channel.basic_consume(queue=queue,
|
|
auto_ack=True,
|
|
on_message_callback=callback)
|
|
print(' [*] Waiting for messages. To exit press CTRL+C')
|
|
|
|
channel.start_consuming()
|
|
except pika.exceptions.ConnectionClosedByBroker:
|
|
pass
|
|
except pika.exceptions.AMQPChannelError:
|
|
pass
|
|
except pika.exceptions.AMQPConnectionError:
|
|
pass
|
|
|
|
|
|
|
|
|