我有一个带有两个节点的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'})
是否有用于指定托管节点的界面?还有另一种处理这种情况的方法吗?
谢谢!
答案 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
的一部分。