2013-01-04 2 views
0

두 개의 노드가있는 rabbitmq 클러스터가 있습니다. node1에서 호스팅 될 큐와 node2에서 호스팅되는 다른 큐를 생성하고 싶습니다.Pika and RabbitMQ - 특정 노드에 대기열 만들기

ConnectionParameters에서 node2로 호스트를 설정하더라도 대기열은 node1에서 계속 생성됩니다.

프로그래밍 방식으로 pika를 사용하여 대기열을 만들려는 노드를 지정하는 방법을 잘 모르겠습니다. 이 이러한 매개 변수는 queue_declare에 없다,이 같은 인수를 전달하는 것은 작동하지 않습니다 호스팅 노드를 지정하기위한 모든 인터페이스는

channel.queue_declare(queue="whereami", durable=True, exclusive=False, auto_delete=False, callback=on_queue_declared, arguments= {'node':'[email protected]'}) 

있습니까? 이 사건을 처리 할 다른 방법이 있습니까?

감사합니다.

답변

1

클러스터 대기열의 노드를 만들 때 지정할 인수를 찾을 수 없지만이 문제는 해결해야합니다. 당신이 클러스터 토끼 @의 노드 1 토끼 @의 노드 2에서 두 개의 노드가 있다고 가정, 당신은 단순히 지정할 수 있습니다

arguments["x-ha-policy"] = "nodes" 
arguments["x-ha-policy-params"] = '[email protected]' 

이 하나는 노드 1 잔분 것이다 큐를 생성합니다.

0

클러스터는 일반적으로 다른 호스트 또는 동일한 호스트의 다른 포트 (see docs for more on this)로 정의됩니다.

pika.connection.ConnectionParameters의 일부로 호스트와 포트 번호를 모두 정의 할 수 있습니다.

+0

이것은 작동하지 않습니다. 여전히 클러스터 전체에 연결되어 마스터에 호스트를 생성합니다. 마찬가지로, 클러스터에 node1과 node2가 있고 ConnectionParameters에서 node2에 연결되어있는 경우에도 node1에 대기열이 생성됩니다. queue_declare 자체에 뭔가가 있어야합니다. –

+0

클러스터 설정에서 좀 더 구체적으로 설명 할 수 있습니까? 1.이 노드는 별도의 물리적 시스템에 있습니까? 아니면 포트가 다른 동일한 시스템에 있습니까? 2. 액티브/액티브 또는 액티브/패시브 설정으로 고 가용성으로 구성되어 있습니까? – bitcycle

+0

예! 두 개의 개별 물리적 컴퓨터에 있으며 두 디스크 노드입니다. 고 가용성을 위해 구성되지 않았습니다. 기본적으로 두 개의 서로 다른 비즈니스 그룹이 두 개의 다른 노드를 사용합니다. 그들은 같은 교환을 공유 할 수 있도록 클러스터되어 있습니다. 대기열을 분리하여 유지하면 한 그룹의 프로그램이 메시지 수신을 중지하면 대기열이 가득 차서 디스크 공간을 차지할 때만 해당 그룹에 영향을 미칩니다. –

관련 문제