2009-03-27 7 views
6

관련 프로세스 간의 통신에 Microsoft Message Queue (System.Messaging)를 사용하는 C#으로 시스템을 구현했습니다. 본질적으로 많은 수의 Sender 서비스가 대기열에 넣을 메시지를 생성하며 수 신자 프로세스는 대기열을보고 대기열에있는 메시지를 가져옵니다.Microsoft Message Queue - 우선 순위 플래그 또는 별도의 대기열?

다른 사람들보다 우선해야 할 메시지가 있다는 말을 들었습니다.

메시지가 파도에 올 가능성이 잠재적으로 메시지의 매우 큰 숫자가 1 안타 (예를 들어 천 정도) 최종 전에 지연이있을 수 있습니다, 그래서에서 큐에 배치되는 경우가있을 수 있습니다 메시지가 처리됩니다. 내 원래 생각

는 다른 스레드에 수신기의 각 처리에 의해 감시되는 제 2 우선 메시지 큐를 가지고 있었다. 이 대기열에는 훨씬 적은 수의 메시지가 있으므로 지연이 적습니다.

그럼 나는 Message.Priority 속성을 우연히 발견했습니다.

그래서 :

나는 다른 큐를 구현하는 것보다이 우선 순위 플래그를 대신 사용해야합니까? 이 메시지를 나머지 메시지보다 앞서 성공적으로 그리고 효율적으로 점프합니까? 그렇다면 어떤 조건과 부작용이있을 수 있습니까?

아니면 원본 계획을 따르고 우선 순위 메시지를위한 다른 대기열을 구현해야합니까?

답변

5

다른 큐를 구현하는 대신이 우선 순위 플래그를 사용해야합니까? .

나머지 메시지보다 앞서 성공적으로 메시지를 효율적으로 이동합니까? .

그렇다면 어떤 조건과 부작용이있을 수 있습니까? 없음, MSMQ는이 방법으로 작동하도록 설계되었습니다.

+0

니스, 고마워. 나는 주변에 몇 가지 어려움이 있을지 걱정했다. – Damovisa

3

분명히 메시지 우선 순위가 필요하지 않습니다. - http://www.udidahan.com/2008/01/30/podcast-message-priority-you-arent-gonna-need-it\. Udi는 몇 가지 가능한 아키텍처와 msmq 메시지 우선 순위를 사용하는 대신 여러 끝점을 사용하여 인프라를 설정하는 방법에 대해 설명합니다. 그는 또한 메시지 우선 순위를 켜면 서버의 메모리 사용량이 증가한다고 언급합니다.