Pika和RabbitMQ - 在特定节点上创建队列

时间:2013-01-04 20:34:25

标签: python rabbitmq amqp pika

我有一个带有两个节点的rabbitmq集群。我想创建一些要在node1上托管的队列,以及在node2上托管的其他队列。

即使我将ConnectionParameters中的主机设置为node2,队列仍将最终在node1上创建。

以编程方式,我不确定如何使用pika来指定我想要创建队列的节点。 queue_declare中没有这样的参数,并且传递这样的参数似乎不起作用:

channel.queue_declare(queue="whereami", durable=True, exclusive=False, auto_delete=False, callback=on_queue_declared, arguments= {'node':'rabbit@node1'})

是否有用于指定托管节点的界面?还有另一种处理这种情况的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我找不到任何参数来指定集群队列中的哪个节点将被创建,但我对此有所了解。假设你在集群rabbit @ node1和rabbit @ node2中有两个节点,你可以简单地指定:

arguments["x-ha-policy"] = "nodes"
arguments["x-ha-policy-params"] = 'rabbit@node1'

这个将创建仅在node1上残留的队列。

答案 1 :(得分:0)

群集通常在不同的主机上定义,或者在同一主机上使用不同的端口定义(see docs for more on this)。

可以将主机和端口号定义为pika.connection.ConnectionParameters的一部分。