如何使用pika连接到RabbitMQ集群的Python客户端?

8 投票
1 回答
8412 浏览
提问于 2025-04-18 06:30

我有一个用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()

1 个回答

3

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

通常,要解决这个常见问题,只需要配置一个简单的负载均衡器,然后把客户端连接到这个负载均衡器上就可以了。

客户端 -----> 负载均衡器 -----> RabbitMQ 实例集群。

补充:

负载均衡器可以使用 HAPROXY,或者像 http://crossroads.e-tunity.com/ 这样的工具,它们都很轻便,使用起来也简单。

我还想补充一点: RabbitMQ 客户端连接多个主机

撰写回答