2016-07-28 5 views
1

내 회사에서 나는 다른 안드로이드 장치에서 실행되는 배터리 테스트를 실행하고 있습니다.Rabbitmq 및 모든 대기열을 잡으십시오

오늘 테스트 (작업)는 여러 작업자가있는 단일 대기열에서 실행됩니다.

여러 대기열에 하나의 대기열을 분할하고 싶습니다. 테스트를 최적화하려면 회사마다 몇 대의 X 장치가 있는지에 따라 실행을 시작해야합니다. (예 : 회사에 2 대의 A 디바이스가 있고 장치에 테스트를 보내려면 A - 대기열에 --concurrency = 2 인 단일 작업자가 있으므로 최대 2 개의 테스트를 연속으로 실행할 수 있습니다.

한 번에 모두 마이그레이션하지 않으므로 하이브리드 버전을 구현하기위한 첫 번째 단계를 수행하고 구현하려는 논리는 다음과 같습니다.

장치 B (그것은 단지 하나) 큐 및 큐 B에 가서 (그 중 두 가지가있다) 동안 이전 기존 한 모든 다른 사람.

enter image description here

내 문제는 기존 큐입니다. 장치 C에서 테스트를 보내면 catch_all 큐의 이름이 이고,이라는 작업이 수신되지 않았으므로 대기열에 작업을 보냅니다. C입니다. 말할 방법을 찾고 있는데 : "Rabbitmq는 대기열을 사용하십시오 기존의 대기열 이름이 장치 이름과 일치하지 않을 경우을 유산으로 남겨주세요."

이 방법이 있습니까?

답변

1

당신은

귀하의 설정 QueueA 및 QueueB 장치를 나타내는 바인딩 키를 사용하여 교환을 통해 결합했을 라우팅 키와 대체 거래소 (https://www.rabbitmq.com/ae.html)와 바인딩의 조합으로이 작업을 수행 할 수 있습니다.

 
| exchange| binding | queue | 
|---------|----------|--------| 
| my.ex | device.a | QueueA | 
| my.ex | device.b | QueueB | 

는 디바이스 A에서 메시지를 게시

, 그것은 device.a의 라우팅 키를 가지고 것이며 QueueA에 갈 것입니다.

이제 모든 레거시 장치에 대해 교환 구성에서 대체 교환을 설정합니다. 그러면 device.a 또는 device.b 라우팅 키와 일치하지 않는 메시지가 대체 교환기로 전달됩니다.

대체 교환은 모든 메시지를 레거시 큐로 라우팅합니다.

관련 문제