방법: 큐 검색

업데이트: 2007년 11월

정적 또는 동적 검색 메커니즘을 사용하여 큐 목록을 검색할 수 있습니다. 정적 큐 목록을 검색하면 시스템에서는 쿼리 결과와 함께 MessageQueue 개체를 반환합니다. 동적 큐 목록을 검색하면 시스템에서는 쿼리 결과와 함께 MessageQueueEnumerator 개체를 반환합니다.

큐에 배치된 순서에 따라 메시지를 반환하는 MessageEnumerator와는 달리 MessageQueueEnumerator는 큐를 특정 순서대로 반환하지 않습니다. 그 이유는 네트워크의 큐가 순서대로, 즉 컴퓨터, 레이블 또는 기타 사용자가 액세스할 수 있는 기준으로 정의되어 있지 않기 때문입니다. MoveNext 메서드를 호출하여 커서를 열거형의 첫 번째 큐로 이동할 수 있습니다. 열거자가 초기화된 다음 MoveNext를 사용하여 나머지 큐로 이동할 수 있습니다.

MessageQueueEnumerator를 사용하여 뒤로 이동하는 것은 불가능합니다. 커서는 큐 열거형에서 앞으로만 이동할 수 있습니다. 따라서 뒤로 이동하려면 우선 Reset 메서드를 호출하여 열거형을 다시 설정하고 커서를 목록의 시작 위치에 다시 놓아야 합니다. 열거자는 동적이므로 커서의 현재 위치에서 벗어나 추가된 큐에 액세스할 수 있습니다. 그러나 커서의 현재 위치의 앞에 삽입된 큐에 액세스하려면 먼저 Reset을 호출해야 합니다.

GetPublicQueues, GetPrivateQueuesByMachineGetMessageQueueEnumerator 메서드는 정적 메서드이므로 메서드를 호출하기 전에 MessageQueue 클래스의 인스턴스를 만들 필요가 없습니다.

공개 또는 개인 큐의 정적 목록을 검색하려면

  1. 쿼리 결과가 보관될 MessageQueue 형식의 배열을 만듭니다.

  2. MessageQueue 클래스에서 적절한 메서드를 호출합니다.

    • 모든 공개 큐를 기준 없이 검색하려면 GetPublicQueues 메서드를 호출합니다.

    • 기준을 사용하여 공개 큐를 검색하려면 Criteria 매개 변수를 적절한 값으로 설정한 다음 GetPrivateQueuesByMachine 메서드를 호출합니다.

    • 범주 GUID를 공유하는 공개 큐만 검색하려면 GetPublicQueuesByCategory 메서드를 호출하고 범주 GUID를 매개 변수로 지정합니다.

    • 레이블을 공유하는 공개 큐만 검색하려면 GetPublicQueuesByLabel 메서드를 호출하고 레이블을 매개 변수로 지정합니다.

    • 특정 컴퓨터의 공개 큐만 검색하려면 GetPublicQueuesByMachine 메서드를 호출하고 컴퓨터 이름을 매개 변수로 지정합니다.

  3. 결과를 배열에 할당합니다.

    예를 들어, 다음 코드에서는 목록 상자를 사용하여 로컬 컴퓨터에서 검색한 모든 공개 큐를 표시하는 방법을 보여 줍니다.

    Private Sub button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles button1.Click
        Dim mqlist() As System.Messaging.MessageQueue
        Dim i As Integer
        ' Retrieve queues on the local machine.
        mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(".")
        ' Clear the current contents of the list.
        Me.ListBox1.Items.Clear()
        ' Display the results.
        For i = 0 To mqlist.Length - 1
            Me.ListBox1.Items.Add(mqlist(i).Path)
        Next
    End Sub
    
     private void button1_Click(System.Object sender, System.EventArgs e)
        {
            System.Messaging.MessageQueue[] mqlist;
            // Retrieve public queues.
            mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(
               ".");
            // Clear the current contents of the list.
            this.listBox1.Items.Clear();
            // Display the results.
            for (int i = 0; i < mqlist.Length; i++)
            {
                this.listBox1.Items.Add(mqlist[i].Path);
            }
        }
    

    이 코드 예제는 Visual Basic IntelliSense 코드 조각으로도 사용할 수 있습니다. 이 코드 조각은 코드 조각 선택기의 Windows 운영 체제 > 메시지 큐에 있습니다. 자세한 내용은 방법: 사용자 코드에 코드 조각 삽입(Visual Basic)을 참조하십시오.

동적 큐 목록을 검색하려면

  1. 쿼리 결과를 보관할 MessageQueueEnumerator 개체를 만듭니다.

  2. MessageQueue 클래스의 GetMessageQueueEnumerator 메서드를 호출합니다.

  3. 네트워크에서 큐의 하위 집합을 검색하려면 MessageQueueCriteria 매개 변수를 적절한 값으로 설정합니다.

  4. 만든 MessageQueueEnumerator 개체에 결과를 설정합니다. 코드는 다음과 비슷합니다.

    Dim mqEnum As System.Messaging.MessageQueueEnumerator
    mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator()
    
         System.Messaging.MessageQueueEnumerator mqEnum;
            mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator();
    

참고 항목

작업

방법: 메시지 검색

개념

큐와 메시지 컬렉션