큐 참조 권장 사항
업데이트: 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 구성 요소 인스턴스 만들기