【问题标题】:Create Queue dynamically with different exchange types使用不同的交换类型动态创建队列
【发布时间】:2020-03-21 07:10:20
【问题描述】:

我正在尝试编写一个方法,该方法使用现有交换名称、新队列名称和路由键的参数创建新队列。交换可能有不同的类型(直接、扇出、主题)。

有没有办法在不知道交换类型的情况下制作和绑定队列?

def my_queue(self, exchange_name, queue_name, routing_key):
    with connection.acquire(block=True) as conn:
        ex = Exchange(exchange_name, type='topic')
        queue = Queue(name="my_queue", routing_key="my_key", exchange=ex)
        queue.maybe_bind(conn)
        queue.declare()

【问题讨论】:

    标签: python rabbitmq celery amqp kombu


    【解决方案1】:

    考虑到 Celery 通常会自动为您创建队列,您所要做的就是调用 add_consumer() 来订阅(在运行时)一个或多个工作人员到特定队列。如前所述,如果队列不存在,Celery 将为您完成。同样,您可能想要取消订阅队列,在这种情况下您调用cancel_consumer()

    【讨论】:

    • 我需要为特定的交换做队列,并且 add_consumer 还需要交换名称和类型(请参阅您提供的链接):“如果您需要更多控制,您还可以指定交换,routing_key 甚至其他选项”
    • 您根本不必指定交易所。 add_consumer('new_queue', reply=True, destination['celery1@domain.tld']) 工作得很好。
    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 2013-09-14
    • 2011-12-15
    • 2017-05-09
    • 2022-12-15
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多