import pika import random import time from datetime import datetime queue_name = 'queue1' exchange = 'logs' def callback(ch, method, properties, body): received_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") message = body.decode() print(f"[{received_time}] Потребитель 1: сообщение - '{message}'") # Имитация обработки сообщения time.sleep(random.choice([1, 2])) print(f"[{received_time}] Потребитель 1: сообщение '{message}' обработано\n") ch.basic_ack(delivery_tag=method.delivery_tag) def setup_connection(): connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue_declare(queue=queue_name) channel.queue_bind(exchange=exchange, queue=queue_name) return connection, channel if __name__ == '__main__': connection, channel = setup_connection() try: print("[*] Ожидание сообщений") channel.basic_consume(queue=queue_name, on_message_callback=callback) channel.start_consuming() except KeyboardInterrupt: print("Остановка...") finally: if connection.is_open: connection.close() print("Соединение закрыто.")