soar_subscribe.py 814 Bytes
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
#!/usr/bin/env python
import pika


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


def subscribe(
    queue_name,
    topic,
    publish_exchange="soar_publish",
    broadcast_exchange="soar_broadcast",
):
    adm_connection = get_connection()
    admin_channel = adm_connection.channel()
    admin_channel.exchange_declare(exchange=broadcast_exchange, exchange_type="fanout")
    admin_channel.queue_bind(exchange=broadcast_exchange, queue=queue_name)
    sub_connection = get_connection()
    subscriber_channel = sub_connection.channel()
    subscriber_channel.exchange_declare(
        exchange=publish_exchange, exchange_type="topic"
    )
    subscriber_channel.queue_bind(
        exchange=publish_exchange, queue=queue_name, routing_key=topic
    )