2016-11-30 1 views
0

동일한 이벤트에 대해 두 종류의 작업자가 있습니다.AMQP와의 팬 아웃 및 직접 교환

"직접"교환과 같은 일부 직원 중 한 명에게만 메시지를 발송하고 싶습니다. 그러나 다른 노동자들은 메시지를 모두 처리해야합니다 (예 : 팬 아웃).

설명하기가 약간 어렵지만 아이디어는 여기에 있습니다. 그리고 아마도 다음 스키마는 제가 여러분이 원하는 것을 이해하는데 도움이 될 것입니다.

Architecture I would like to have

는 해결책이 있습니까?

종류와 관련, 벤

답변

0

당신의 최선의 선택이 당신의 교환과 큐간에 여러 바인딩 라우팅 키를 사용하는 것입니다.

팬 아웃이 아닌 직접 교환이나 주제 교환을 권장합니다.

는 위의 예제 이미지를 모델링하기 위해, 구성은 다음과 같이 보일 것이다 :

| exchange | routing key | queue | 
|----------|-------------|---------| 
| some.ex | type.1  | queue.1 | 
| some.ex | type.1  | queue.2 | 
| some.ex | type.1  | queue.3 | 
| some.ex | type.2  | queue.4 | 
| some.ex | type.2  | queue.5 | 

는 기본적으로, 당신은 대기열 당 라우팅 키와 근로자 당 대기열이 필요합니다.


교환, 대기열 및 바인딩에 대해 좀 더 자세히 읽어보고 언제 사용할지 더 자세히 알기를 원할 수 있습니다. 나는 이것을 (다른 RMQ 사용 시나리오와 함께) https://leanpub.com/u/derickbailey

1

에서 다루고있다. 내가 올바르게 당신을 이해한다면, 한 작업자 만이 아이템에 대해 작업하는 "타입 -1"을 원할 것이다. "type-2"는 모든 핸들러가 이벤트를 승인해야하는 다중 핸들러 (로그 핸들러와 같은)로 취급 될 수 있습니다.

맞으면 2 개의 대기열 (교환)을 연결할 수 있습니다. exchange1 - fanout - 모든 "type-2"(로거)가 여기에서 기다리므로 모든 사람이 이벤트를받습니다. exchange2 - direct - 모든 "type-1"이 여기에서 대기하므로 하나만 이벤트를받습니다.

트릭 - "exchange1"을 듣고있는 소비자가 "exchange2"에 게시되도록해야합니다.

+0

안녕하세요, Pauwelyn, 저는 실제로 그것이 질문에 대답한다고 생각하지만, 저는 당신의 요지를 명확히 이해합니다. 감사 !! – user7412510

관련 문제