【问题标题】:How to connect to a RabbitMQ cluster with a Python Client using pika?如何使用 pika 通过 Python 客户端连接到 RabbitMQ 集群?
【发布时间】:2014-07-02 07:29:56
【问题描述】:

我有一个 Python 客户端,它使用 Pika 包 (0.9.13) 并从 RabbitMQ 集群中的一个节点检索数据。集群由放置在两个不同主机(url_1 和 url_2)中的两个节点组成。如何让我的 Python 客户端同时订阅两个节点?

这是我的代码的主要结构:

import pika
credentials = pika.PlainCredentials(user, password)
connection = pika.BlockingConnection(pika.ConnectionParameters(host=url_1,
                                     credentials=credentials, ssl=ssl, port=port))
channel = connection.channel() 
channel.exchange_declare(exchange=exchange.name, 
                         type=exchange.type, durable=exchange.durable)

result = channel.queue_declare(queue=queue.name, exclusive=queue.exclusive, 
                             durable=queue.durable, auto_delete=queue.autoDelete)
channel.queue_bind(exchange=exchange.name, queue=queue.name, 
                   routing_key=binding_key)
channel.basic_consume(callback,
                  queue=queue.name,
                  no_ack=True)

channel.start_consuming()

【问题讨论】:

    标签: python rabbitmq cluster-computing pika


    【解决方案1】:

    如果你有一个集群,你连接到哪个节点并不重要。

    通常要解决这个典型问题,配置一个简单的负载平衡器并将客户端连接到 L.B 就足够了。

    clients-----> LB ------> rabbitmq(s) 实例集群。

    编辑:

    负载平衡器为HAPROXY 或例如http://crossroads.e-tunity.com/,它们轻巧且易于使用。

    我还想补充一下:RabbitMQ Client connect to several hosts

    【讨论】:

    • 感谢您的评论。 HAPROXY 似乎是一个不错的选择。我想知道是否将 Python 客户端与 Pika 一起使用与使用 Java 客户端时类似: > ConnectionFactory factory = new ConnectionFactory(); > 地址[] 地址 = {新地址("url_1", 12345), 新 > 地址("url_2", 12346)}; > factory.newConnection(地址);
    • 不,但要小心,Java API 一次只将客户端连接到一个代理,而不是同时连接两个!我想添加这篇文章 stackoverflow.com/questions/9508246/… 我认为可以帮助你,如果你想处理故障转移情况
    猜你喜欢
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    相关资源
    最近更新 更多