from celery import Celery import time import pika app = Celery('consumer', broker='pyamqp://guest:guest@localhost//') @app.task def process_messages(queue_name, delay): connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # Объявляем очередь с именем channel.queue_declare(queue=queue_name) # Привязываем очередь к 'logs' exchange channel.queue_bind(exchange='logs', queue=queue_name) def callback(ch, method, properties, body): print(f" [x] Получено сообщение: {body}") time.sleep(delay) print(f" [x] Обработано сообщение: {body}") # Устанавливаем consumer а чтобы получать сообщения из очереди channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True) print(f' [*] Ожидаем сообщения от {queue_name}') channel.start_consuming() if __name__ == '__main__': process_messages.delay('consumer1_queue', 2) # Queue для Consumer 1 с задержкой 2 с process_messages.delay('consumer2_queue', 0) # Queue для Consumer 2 без задержки