import sys
from datetime import datetime

import pika

_QUEUE_NAME = "vk_messages_queue"
_EXCHANGE_NAME = "vk_messages"


def main():
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    channel = connection.channel()

    channel.exchange_declare(
        exchange=_EXCHANGE_NAME,
        exchange_type='fanout'
    )

    channel.queue_declare(queue=_QUEUE_NAME, exclusive=True)
    channel.queue_bind(exchange=_EXCHANGE_NAME, queue=_QUEUE_NAME)

    def callback(ch, method, properties, body):
        now = datetime.now()
        current_time = now.strftime("%H:%M:%S")

        print(f"[vkReader] Received [{str(body)}] in [{current_time}]")
        ch.basic_ack(delivery_tag=method.delivery_tag)

    channel.basic_consume(
        queue=_QUEUE_NAME,
        on_message_callback=callback,
        auto_ack=False
    )

    print('[*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()


if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        print('Interrupted')
        sys.exit(0)