2016-07-29 4 views
0

여러 게시자가 보내는 메시지 스트림을 관리 할 방법을 찾고 있습니다.Azure 서비스 버스의 게시자 큐 대기열

인위적인 예입니다.

각 게시자가 임의의 순서로 처리 할 수있는 작은 구성 요소로 분해 할 수있는 작업을 제출하고 있습니다. 각 구성 요소는 처리하는 데 몇 초가 걸립니다.

게시자 A는 1000 개의 작은 구성 요소로 구성된 대기열에 작업을 제출합니다. 소비자 X는 대기열에 가입하고 대기열 메시지 처리를 시작하고 그 결과를 결과 대기열에 보냅니다.

작업의 중간 단계에서 Publisher B는 1000 개의 구성 요소로 작업을 제출합니다.

게시자 A는 게시자 A와 게시자 B의 메시지를 번갈아 가며 게시자 B가 결과를 받기 전에 첫 번째 작업을 완료 할 때까지 기다릴 필요가 없기 때문에/게시자 A는 이제 게시자가 결과를 더 느리게 수신하도록합니다. B가 직업이 있습니다. (네트워킹의 공정한 대기열과 비슷합니다.)

이것은 어떤 수의 게시자에게도 적합해야합니다.

그러면 소비자의 규모를 늘리면 각 소비자가 동일한 방식으로 행동해야합니다. 그들은 공정한 큐잉을 보장하기 위해 그들의 행동을 조율 할 필요가 없으며 단지 대략적인 근사값이 좋습니다.

서비스 버스에서이를 처리 할 패턴이 있습니까? 대신 내가 사용해야하는 다른 푸른 기술이 있습니까?

+0

가장 쉬운 방법은 여러 구독으로 주제의 다른 대기열을 만든 다음 여러 소비자가있는 것입니다. – Thomas

+0

고마워요 @ 토마스, 어떻게 도움이되는지 잘 모르겠습니다. 더 설명해 주시겠습니까? – Sudsy

+1

서비스 버스 메시지는 FIFO로 처리됩니다. parrallel에서 처리하려는 경우 가장 쉬운 방법은 여러 개의 대기열을 만드는 것입니다. – Thomas

답변

1

작은 구성 요소 메시지를 보내려면 주제를 만들 수 있습니다.

해당 주제에 여러 구독을 작성하십시오. 예 2의 경우, 각 메시지의 50 %를 필터하도록 구성하십시오. 정액제 1 출판사 (A)로부터의 메시지를 포함 할 것이며, 정액제 2 사용 (here's how)

그럼 동시에 여러 게시자의 메시지를 처리 ​​할 수있는 능력의 결과로, 각각의 가입에 대한 판독기를 만들 게시자 B. 메시지를 포함 할 여러 가입자.

+0

어떻게 작동하는지 알 수 있습니다. 내가 올바르게 이해한다면이 접근법에 약간의 타협점이 있습니다. 1) 소비자는 미리 필터링 할 키를 알아야합니다. 2) 부하를 분산시키기 위해 가입자와 소비자를 추가 할 때마다 수학을 수행해야합니다. – Sudsy

+0

예, 공정성은 구독 및 독자의 양에 따라 늘어납니다. – LoekD

관련 문제