다음을 통해 공유


큐 참조 권장 사항

업데이트: 2007년 11월

MessageQueue 구성 요소의 인스턴스를 만드는 경우 구성 요소와 통신할 큐를 지정해야 합니다. 코드에서 큐를 참조하는 방법에는 다음과 같은 세 가지가 있습니다.

  • 경로를 통해 — 원하는 큐에 대해 컴퓨터와 큐 이름을 고유하게 식별하는 큐의 경로

  • 형식 이름을 통해 — 나중에 응용 프로그램에 의해 큐가 만들어질 때 MSMQ에 의해 생성되는 큐의 고유 ID

  • 레이블을 통해 — 큐가 만들어질 때 큐 관리자가 할당하는 큐의 설명 및 고유하지 않은 이름

MessageQueue 구성 요소의 새 인스턴스를 만들지 않고 새 큐를 만들 때에는 경로를 사용해야 합니다. 형식 이름과 레이블은 큐가 만들어진 후 메시지 큐 시스템에서 할당됩니다. 그러나 코드나 도구 상자에서 기존 큐를 참조할 때, 사용할 참조 메서드를 선택할 수도 있습니다. 선택한 메서드는 모두 구성 요소의 Path 속성에 저장됩니다.

경로를 사용하여 큐 참조

큐 경로의 형식은 servername\queuename과 같습니다. 큐 경로는 항상 고유합니다. 다음 표에서는 각 큐 형식에서 사용되는 경로 정보를 나열합니다.

큐 형식

경로에 사용되는 구문

공개 큐

MachineName\QueueName

개인 큐

MachineName\Private$\QueueName

업무 일지 큐

MachineName\QueueName\Journal$

컴퓨터 업무 일지 큐

MachineName\Journal$

컴퓨터 배달 못 한 큐

MachineName\Deadletter$

컴퓨터 배달 못 한 트랜잭션 메시지 큐

MachineName\XactDeadletter$

로컬 컴퓨터 이름은 "."로 대체할 수 있기 때문에 "YourMachine\MyQueue"는 ".\MyQueue"로 쓸 수 있습니다.

다음은 경로를 사용하여 큐를 참조할 때 유의할 사항입니다.

  • 메시지 큐 서버의 도메인 컨트롤러는 경로로 참조된 큐의 작업을 수신하면 해당 경로를 확인하고, 요청한 큐의 형식 이름을 결정해야 합니다. 이 방법은 큐를 형식 이름으로 직접 참조하는 것보다 성능이 약간 느려질 수도 있습니다.

  • XML Web services로 사용할 구성 요소를 설계하는 경우 경로 메서드 대신 큐를 참조하는 형식 이름 메서드를 사용하면 최고의 성능을 얻을 수 있습니다.

  • 큐가 연결되어 있지 않을 때 메시지를 보내는 경우에는 경로를 사용하여 큐를 참조할 수 없습니다. 연결되지 않은 메시지는 형식 이름을 사용하여 보내야 합니다.

MessageQueue 기본 클래스의 두 가지 별도 속성, 즉 MachineName 속성과 QueueName 속성의 반환 결과를 쿼리하고 조합하여 큐의 경로를 검색할 수 있습니다.

코드에서는 다음과 같이 경로를 사용하여 큐를 참조합니다.

MessageQueue1.Path = "YourMachine\MyQueue"
     MessageQueue1.Path = @"YourMachine\MyQueue";
참고:

C#의 @".\MyQueue" 구문 대신 ".\\MyQueue"를 사용해도 결과는 같습니다. @ 기호는 리터럴 문자열을 나타냅니다. 자세한 내용은 string(C# 참조)을 참조하십시오.

형식 이름을 사용하여 큐 참조

형식 이름은 해당 큐가 공개 큐인지 또는 개인 큐인지를 나타내는 문자열 형식이며 필요한 경우 이 이름 뒤에 큐의 생성 GUID 및 기타 ID가 붙습니다. 다음 표에서는 각 큐 형식에서 사용되는 경로 정보를 나열합니다.

큐 형식

형식 이름에 사용되는 구문

공개 큐

FORMATNAME:PUBLIC=QueueGUID

개인 큐

FORMATNAME:PRIVATE=MachineGUID\QueueNumber

업무 일지 큐

FORMATNAME:PUBLIC=QueueGUID;JOURNAL   

- 또는 -

FORMATNAME:PRIVATE=MachineGUID\QueueNumber;JOURNAL

큐에 형식 이름을 할당하지 않고 대신 큐가 만들어질 때 큐 관리자가 이 값을 생성합니다. 형식 이름으로 큐를 참조하는 방법은 큐에 액세스하는 가장 직접적인 방법입니다. 그 이유는 서버의 도메인 컨트롤러가 경로로 큐를 참조할 때처럼 참조를 해석할 필요가 없기 때문입니다.

다음은 형식 이름으로 큐를 참조할 때 필요한 몇 가지 힌트입니다.

  • 연결되지 않은 큐로 메시지를 보낼 경우 큐가 오프라인이면 경로를 확인할 수 없기 때문에 경로 대신 형식 이름으로 큐를 참조해야 합니다.

  • 형식 이름은 네트워크 환경이 변경되거나 큐가 삭제되고 다시 만들어지는 경우에는 유효하지 않을 수도 있습니다.

MessageQueue 클래스의 FormatName 속성을 쿼리하는 방식으로 큐의 형식 이름을 검색할 수 있습니다.

코드에서는 다음과 같이 형식 이름을 사용하여 큐를 참조합니다.

MessageQueue1.Path = _
   "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"
     MessageQueue1.Path =
           "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75";

레이블을 사용하여 큐 참조

레이블로 큐를 참조할 수도 있습니다. 이때 레이블은 관리자가 큐에 할당하는 설명 텍스트 레이블입니다. 레이블이 항상 고유한 것은 아니므로 레이블을 사용하여 특정 큐에 연결할 때 이름이 충돌하면 오류가 발생합니다.

레이블은 큐를 다른 컴퓨터로 이동할 것이라는 사실을 미리 알고 있는 경우에 유용합니다. 레이블만으로 큐를 참조하는 경우 새 컴퓨터에 해당 레이블을 가진 다른 큐가 없으면 새 위치로 큐를 이동한 후에 모든 작업을 계속 수행할 수 있습니다. 새 위치에 동일한 이름의 큐가 있으면 Send 메서드에서 오류를 발생시킵니다.

MessageQueue 클래스의 Label 속성을 쿼리하여 큐의 레이블을 검색할 수 있습니다.

코드에서는 다음과 같이 레이블 이름을 사용하여 큐를 참조합니다.

MessageQueue1.Path = "LABEL:MyQueue"
     MessageQueue1.Path = "LABEL:MyQueue";

참고 항목

작업

방법: 큐 만들기

방법: MessageQueue 구성 요소 인스턴스 만들기

기타 리소스

큐 만들기, 삭제 및 관리