soar_forward.py 1.05 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#!/usr/bin/env python
import pika


def get_connection():
    return pika.BlockingConnection(pika.ConnectionParameters(host="localhost"))


def deliver(body, queue_name):
    print("forward to: %s" % queue_name)
    deliver_connection = get_connection()
    deliver_channel = deliver_connection.channel()
    deliver_channel.queue_declare(queue=queue_name, durable=True)
    deliver_channel.basic_publish(exchange="", routing_key=queue_name, body=body)
    deliver_connection.close()


def listen(from_queue_name, to_queue_name):
    def fwd_callback(ch, method, properties, body):
        delivered = deliver(body, to_queue_name)
        ch.basic_ack(delivery_tag=method.delivery_tag)

    listen_connection = get_connection()
    listen_channel = listen_connection.channel()
    listen_channel.queue_declare(queue=from_queue_name, durable=True)
    listen_channel.basic_consume(
        queue=from_queue_name, on_message_callback=fwd_callback
    )
    listen_channel.start_consuming()


def forward(from_queue_name, to_queue_name):
    listen(from_queue_name, to_queue_name)