1

지난 24 시간 동안이 작업을 해왔습니다.Azure Service Bus Queue의 처리를 여러 인스턴스에 균등하게 분배하는 방법은 무엇입니까?

WorkerRoleWithSBQueue Visual Studio 템플릿을 사용하고 있습니다.

PrefetchCount가 0

로 설정 I도) (OnMessageOptions으로 시도 {MaxConcurrentCalls = 1};

어제 나는 두 개의 인스턴스가 있었고 두 인스턴스를 동등하게 사용하는 것처럼 보였습니다. 두 개의 요청을 동시에 보내면 두 인스턴스를 모두 사용하여 메시지를 처리한다는 것을 의미합니다.

이제 인스턴스 수를 10으로 늘렸고 드로잉 보드로 돌아 왔습니다. 나는 10 개의 메시지를 보내고 각 메시지는 15 초 정도가 걸린다. 어떻게 든 단일 인스턴스는 한 번에 두 개의 메시지를 사용합니다. 즉 작동해야하는 인스턴스에 작업 할 메시지가 없습니다.

12 월 11 일 마감일이 있으며 조금 당황하기 시작합니다.

혹시이 경험이 있습니까?

답변

0

더 많은 수의 메시지를 가지고 이것을 측정 했습니까? 내 유일한 질문은 - ServiceBus가 범죄자가 아니며 데이터를 덜 끌어 오는 역할 인스턴스가 아니라는 것을 어떻게 알 수 있습니까? 평균적인 경우 ServiceBus는 균일하게 제공됩니다.

prefetchCount = 0으로 설정하면 ServiceBus에 recv를 알리는 방법이되어야합니다. 절대적으로 단지 하나의 메시지 - 그러나 제 견해로 - 균일 한 분산 처리를 달성하는 올바른 방법이 아닐 수도 있습니다. 이렇게하면 대기열 크기가 크고 수신자가 메시지를 처리하는 데 뒤쳐져있을 때 애플리케이션에서 특히 많이 발생하는 성능 저하 (n/w 호출)가 발생합니다. 대신 역할 사이에 메시지를 배포하는 전략을 제안 할 것입니다.

리시버가 항상 일정한 숫자이고 트래픽이 모든 세션 ID의 트래픽에 균등하게 분산되어 있는지 확인하는 경우 전략을 사용하는 것입니다. - 모든 메시지 생성자에게 SessionId를 할당하십시오. 메시지를 말하십시오 1-10 - 수신자 측에서 사용 AcceptMessageSession(sessionId)

세션이 자신의 필요에 맞지 않는다고 생각되면 자유롭게 시나리오 개요를 제공하십시오. 나는 그것을 달성하기위한 좋은 방법을 제안하려고 노력할 수있다.

HTH! Sree

관련 문제