2008-09-15 2 views
4

대기열의 메시지를 처리하는 C#으로 Windows 서비스를 만들고 있습니다. ops는 메시지의 속성에 따라 프로덕션에서 서비스를 파티셔닝 할 수있는 유연성을 제공하고자합니다. 예를 들어, 고객 A의 웹 주문, 고객 A의 다른 배치 주문, 고객 B의 세 번째 웹 또는 배치 주문 등을 한 인스턴스에서 처리 할 수 ​​있어야합니다.메시지 큐 (MSMQ)에서받은 메시지를 일부 속성으로 필터링 할 수 있습니까? (a.ka.a. 주제)

현재 나의 솔루션은 각 고객 및 소스 조합에 개별 대기열을 할당하는 것입니다. 주문을 대기열에 넣는 프로세스는 올바른 결정을 내려야합니다. 내 Windows 서비스는 하나 이상의 대기열에서 메시지를 가져 오도록 구성 할 수 있습니다. 지저분하지만 작동합니다.

답변

5

아니요,하지만 PEEK을 대기열에 넣고 정말로 메시지를 사용할지 결정할 수 있습니다.

3

사용 GetMessageEnumerator2()이 같은 :

MessageEnumerator en = q.GetMessageEnumerator2(); 

while (en.MoveNext()) 
{ 
    if (en.Current.Label == label) 
    { 
     string body = ((XmlDocument)en.Current.Body).OuterXml; 
     en.RemoveCurrent(); 
     return body; 
    } 
} 
관련 문제