2

서비스 버스에서 메시지를 수신하고 해당 메시지를 처리하는 스레드를 생성하는 QueueClient가 있습니다.Azure에서 현재 스레드 수를 찾는 방법은 무엇입니까?

var options = new OnMessageOptions(); 
options.MaxConcurrentCalls = 10; 

// Use of Service Bus OnMessage message pump. 
_client.OnMessageAsync(
    async (msg) => 
    { 
     // Will block the current thread if Stop is called. 
     await ProcessMessageAsync(processStream, msg); 
    }, 
    options); 

이 스레드를 생성 할 수있는 최대 스레드 수는 옵션에 지정된대로 10 개임을 알고 있습니다. 현재 얼마나 많은 쓰레드가 존재하는지 알 수있는 방법이 있습니까?

보너스 질문 : 스레드 (개별 또는 집단)의 메모리 사용을 모니터링 할 수 있습니까? MaxConcurrentCalls 옵션에 지정된

감사

+0

얼마나 많은 스레드 * *? 응용 프로그램에서 응용 프로그램이 실행중인 가상 컴퓨터에서 메시지를 처리하는 스레드의 수는 얼마입니까? –

답변

1

값은 프로세스에서 실행 전용 스레드 동일시하지 않습니다. 서비스 버스 서비스에 대기중인 병렬 비동기 수신 요청 수를 나타냅니다. 비동기 요청이 완료되면 결과가 콜백 스레드에서 처리됩니다. 대기열에 많은 메시지가 있고 MaxConcurrentCalls = 10으로 지정하면 이론적으로 OnMessageAsync를 호출하는 최대 10 개의 스레드가있을 수 있습니다.

+0

나는이 점을 알고 있습니다. 주어진 시점에 OnMessageAsync()를 호출하는 현재 스레드 수를 얻을 수 있는지 여부는 질문입니다. – iliaden

+0

이렇게 할 수있는 방법 중 하나는 성능 카운터를 호출 할 때마다 증가하는 OnMessageAsync를 "Inflight OnMessage Calls"라고합니다. 메서드를 종료하기 전에이 카운터를 감소시킵니다. –

관련 문제